okra pushed a commit to branch master.

http://git.enlightenment.org/apps/ephoto.git/commit/?id=16cf9beb6ee63960425b988207e378f8ce9406a2

commit 16cf9beb6ee63960425b988207e378f8ce9406a2
Author: Stephen okra Houston <smhousto...@gmail.com>
Date:   Wed Feb 17 10:50:32 2016 -0600

    Ephoto: Don't save/overwrite images with raw extensions.
---
 src/bin/ephoto.h                | 19 +++++++++++++++++++
 src/bin/ephoto_single_browser.c | 15 +++++++++++++--
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h
index f7d2a22..5a4b539 100644
--- a/src/bin/ephoto.h
+++ b/src/bin/ephoto.h
@@ -260,6 +260,25 @@ _ephoto_eina_file_direct_info_image_useful(const 
Eina_File_Direct_Info *info)
    return EINA_FALSE;
 }
 
+static inline Eina_Bool
+_ephoto_file_image_can_save(const char *ext)
+{
+   int i = 0;
+
+   const char *filters[] = {
+      "png", "jpeg", "jpg", "eet", "xpm", "tiff", "tif", "gif", "svg", "webp",
+      "pmaps", "bmp", "wbmp", "ico", "generic"
+   };
+
+   int count = sizeof(filters) / sizeof(filters[0]);
+   for (i = 0; i < count; i++)
+     {
+        if (!strcasecmp(ext, filters[i]))
+           return EINA_TRUE;
+     }
+   return EINA_FALSE;
+}
+
 extern int EPHOTO_EVENT_ENTRY_CREATE;
 extern int EPHOTO_EVENT_POPULATE_START;
 extern int EPHOTO_EVENT_POPULATE_END;
diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c
index eb2b028..1cbf5a9 100644
--- a/src/bin/ephoto_single_browser.c
+++ b/src/bin/ephoto_single_browser.c
@@ -20,6 +20,7 @@ struct _Ephoto_Single_Browser
    Evas_Object *nolabel;
    Evas_Object *botbox;
    Evas_Object *event;
+   Elm_Object_Item *save;
    const char *pending_path;
    Ephoto_Entry *entry;
    Ephoto_Orient orient;
@@ -764,6 +765,11 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
             evas_object_show(sb->infolabel);
 
             ephoto_title_set(sb->ephoto, bname);
+
+             if (!_ephoto_file_image_can_save(strrchr(bname, '.')+1))
+               elm_object_item_disabled_set(sb->save, EINA_TRUE);
+             else
+               elm_object_item_disabled_set(sb->save, EINA_FALSE);
          }
         else
          {
@@ -1115,6 +1121,11 @@ _save_image(void *data, Evas_Object *obj EINA_UNUSED,
    Ephoto_Single_Browser *sb = data;
    Evas_Object *popup, *box, *label, *ic, *button;
 
+   if (!_ephoto_file_image_can_save(strrchr(sb->entry->label, '.')+1))
+     {
+        _failed_save(sb);
+        return;
+     }
    if (sb->event)
      evas_object_freeze_events_set(sb->event, EINA_TRUE);
 
@@ -1233,7 +1244,7 @@ _save_image_as_done(void *data, Evas_Object *obj 
EINA_UNUSED, void *event_info)
 
        char buf[PATH_MAX];
 
-       if (!evas_object_image_extension_can_load_get(selected))
+       if (!_ephoto_file_image_can_save(strrchr(selected, '.')+1))
           snprintf(buf, PATH_MAX, "%s.jpg", selected);
        else
           snprintf(buf, PATH_MAX, "%s", selected);
@@ -2552,7 +2563,7 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object 
*parent)
    menu = elm_toolbar_item_menu_get(icon);
 
    elm_menu_item_add(menu, NULL, "edit-undo", _("Reset"), _reset_image, sb);
-   elm_menu_item_add(menu, NULL, "document-save", _("Save"), _save_image, sb);
+   sb->save = elm_menu_item_add(menu, NULL, "document-save", _("Save"), 
_save_image, sb);
    elm_menu_item_add(menu, NULL, "document-save-as", _("Save As"),
        _save_image_as, sb);
    elm_menu_item_add(menu, NULL, "document-send", _("Upload"), _upload_image,

-- 


Reply via email to