svn update: 58122 (latest:58122)
authorJaehwan Kim <jae.hwan.kim@samsung.com>
Tue, 5 Apr 2011 04:32:39 +0000 (13:32 +0900)
committerJaehwan Kim <jae.hwan.kim@samsung.com>
Tue, 5 Apr 2011 04:32:39 +0000 (13:32 +0900)
15 files changed:
ChangeLog
configure.ac
efreet.rebase.complete [new file with mode: 0644]
src/bin/efreet_icon_cache_create.c
src/lib/efreet_base.c
src/lib/efreet_cache.c
src/lib/efreet_cache_private.h
src/lib/efreet_desktop.c
src/lib/efreet_icon.c
src/lib/efreet_ini.c
src/lib/efreet_menu.c
src/lib/efreet_mime.c
src/lib/efreet_trash.c
src/lib/efreet_utils.c
src/lib/efreet_xml.c

index 81862e0..c4698df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -77,3 +77,7 @@
        * Delay cache recreation with a timer
        * Move desktop cache to efreet_cache.c, and cache all requests which
          hit the eet cache
+
+2011-03-18  Mike Blumenkrantz
+
+        * Use eina_log more effectively
index d80cd2a..1831fb5 100644 (file)
@@ -12,8 +12,8 @@ dnl m4_define([relname], [ver-pre-svn-07])
 dnl m4_define([v_rel], [-release relname])
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
 m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])])
-m4_define([lt_rev], m4_eval(v_maj + v_min))
-m4_define([lt_cur], v_mic)
+m4_define([lt_cur], m4_eval(v_maj + v_min))
+m4_define([lt_rev], v_mic)
 m4_define([lt_age], v_min)
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
@@ -48,7 +48,7 @@ AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version])
 AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version])
 AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version])
 AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
-version_info="lt_rev:lt_cur:lt_age"
+version_info="lt_cur:lt_rev:lt_age"
 release_info="v_rel"
 AC_SUBST(version_info)
 AC_SUBST(release_info)
diff --git a/efreet.rebase.complete b/efreet.rebase.complete
new file mode 100644 (file)
index 0000000..2f58782
--- /dev/null
@@ -0,0 +1 @@
+[efreet] Rebase is completed.
index 4748c90..bcda5db 100644 (file)
@@ -16,7 +16,8 @@
 #include <Ecore.h>
 #include <Ecore_File.h>
 
-#define EFREET_MODULE_LOG_DOM /* no logging in this file */
+#define EFREET_MODULE_LOG_DOM _efreet_icon_cache_log_dom
+static int _efreet_icon_cache_log_dom = -1;
 
 #include "Efreet.h"
 #include "efreet_private.h"
@@ -34,7 +35,6 @@ static Eina_Array *exts = NULL;
 static Eina_Array *extra_dirs = NULL;
 static Eina_Array *strs = NULL;
 static Eina_Hash *icon_themes = NULL;
-static int verbose = 0;
 
 static Eina_Bool
 cache_directory_find(Eina_Hash *dirs, const char *dir)
@@ -305,9 +305,9 @@ cache_scan(Efreet_Icon_Theme *theme, Eina_Hash *themes, Eina_Hash *icons, Eina_H
             Efreet_Icon_Theme *inherit;
 
             inherit = eina_hash_find(icon_themes, name);
-            if (!inherit && verbose)
-                fprintf(stderr, "Theme `%s` not found for `%s`.\n",
-                        name, theme->name.internal);
+            if (!inherit)
+                INF("Theme `%s` not found for `%s`.",
+                    name, theme->name.internal);
             if (!cache_scan(inherit, themes, icons, dirs, changed)) return EINA_FALSE;
         }
     }
@@ -336,8 +336,8 @@ check_changed(Efreet_Cache_Icon_Theme *theme)
             Efreet_Cache_Icon_Theme *inherit;
 
             inherit = eina_hash_find(icon_themes, name);
-            if (!inherit && verbose)
-                fprintf(stderr, "Theme `%s` not found for `%s`.\n",
+            if (!inherit)
+                INF("Theme `%s` not found for `%s`.",
                         name, theme->theme.name.internal);
             if (check_changed(inherit)) return EINA_TRUE;
         }
@@ -627,7 +627,7 @@ cache_lock_file(void)
     fl.l_whence = SEEK_SET;
     if (fcntl(lockfd, F_SETLK, &fl) < 0)
     {
-        if (verbose) printf("LOCKED! You may want to delete %s if this persists\n", file);
+        WRN("LOCKED! You may want to delete %s if this persists", file);
         close(lockfd);
         return -1;
     }
@@ -648,6 +648,77 @@ icon_theme_free(Efreet_Cache_Icon_Theme *theme)
     free(theme);
 }
 
+/**
+ * @internal
+ * @return EINA_TRUE if data adds new
+ */
+static Eina_Bool
+add_data(Eet_File *ef, Eina_Array *data, const char *key)
+{
+    Efreet_Cache_Array_String *add;
+    unsigned int i, j;
+    Eina_Bool added = EINA_FALSE;
+
+    add = eet_data_read(ef, efreet_array_string_edd(), key);
+    if (!add) return EINA_TRUE;
+    /* loop once to check added */
+    for (i = 0; i < data->count; i++)
+    {
+        int found = 0;
+        for (j = 0; j < add->array_count; ++j)
+        {
+            if (!strcmp(add->array[j], data->data[i]))
+            {
+                found = 1;
+                break;
+            }
+        }
+        if (!found)
+        {
+            added = EINA_TRUE;
+            break;
+        }
+    }
+    /* loop again to add all data */
+    for (i = 0; i < add->array_count; i++)
+    {
+        int found = 0;
+        for (j = 0; j < data->count; ++j)
+        {
+            if (!strcmp(add->array[i], data->data[j]))
+            {
+                found = 1;
+                break;
+            }
+        }
+        if (!found)
+            eina_array_push(data, add->array[i]);
+    }
+    IF_FREE(add->array);
+    free(add);
+
+    return added;
+}
+
+
+static void
+save_data(Eet_File *ef, Eina_Array *data, const char *key)
+{
+    Efreet_Cache_Array_String *save;
+    unsigned int i;
+
+    if (!data || !data->count) return;
+
+    save = NEW(Efreet_Cache_Array_String, 1);
+    save->array = NEW(char *, data->count);
+    save->array_count = 0;
+    for (i = 0; i < data->count; ++i)
+        save->array[save->array_count++] = data->data[i];
+    eet_data_write(ef, efreet_array_string_edd(), key, save, 1);
+    IF_FREE(save->array);
+    free(save);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -673,6 +744,7 @@ main(int argc, char **argv)
     const char *path;
     char *dir = NULL;
     Eina_Bool changed = EINA_FALSE;
+    Eina_Bool flush = EINA_FALSE;
     int lockfd = -1;
     int tmpfd = -1;
     char **keys;
@@ -680,13 +752,23 @@ main(int argc, char **argv)
 
     /* init external subsystems */
     if (!eina_init()) return -1;
+    _efreet_icon_cache_log_dom =
+        eina_log_domain_register("efreet_icon_cache", EFREET_DEFAULT_LOG_COLOR);
+    if (_efreet_icon_cache_log_dom < 0)
+    {
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_icon_cache.");
+        return -1;
+    }
+
+    eina_log_domain_level_set("efreet_icon_cache", EINA_LOG_LEVEL_ERR);
 
     exts = eina_array_new(10);
     extra_dirs = eina_array_new(10);
 
     for (i = 1; i < argc; i++)
     {
-        if      (!strcmp(argv[i], "-v")) verbose = 1;
+        if (!strcmp(argv[i], "-v"))
+            eina_log_domain_level_set("efreet_icon_cache", EINA_LOG_LEVEL_DBG);
         else if ((!strcmp(argv[i], "-h")) ||
                  (!strcmp(argv[i], "-help")) ||
                  (!strcmp(argv[i], "--h")) ||
@@ -709,11 +791,6 @@ main(int argc, char **argv)
                 eina_array_push(extra_dirs, argv[++i]);
         }
     }
-    if (exts->count == 0)
-    {
-        printf("Error: Need to pass extensions to icon cache create process\n");
-        return -1;
-    }
 
     if (!eet_init()) return -1;
     if (!ecore_init()) return -1;
@@ -743,6 +820,7 @@ main(int argc, char **argv)
 
     icon_themes = eina_hash_string_superfast_new(EINA_FREE_CB(icon_theme_free));
 
+    INF("opening theme cache");
     /* open theme file */
     theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ_WRITE);
     if (!theme_ef) goto on_error_efreet;
@@ -766,6 +844,17 @@ main(int argc, char **argv)
     theme_version->major = EFREET_ICON_CACHE_MAJOR;
     theme_version->minor = EFREET_ICON_CACHE_MINOR;
 
+    if (add_data(theme_ef, exts, EFREET_CACHE_ICON_EXTENSIONS))
+        flush = EINA_TRUE;
+    if (add_data(theme_ef, extra_dirs, EFREET_CACHE_ICON_EXTRA_DIRS))
+        flush = EINA_TRUE;
+
+    if (exts->count == 0)
+    {
+        ERR("Need to pass extensions to icon cache create process");
+        goto on_error_efreet;
+    }
+
     keys = eet_list(theme_ef, "*", &num);
     if (keys)
     {
@@ -778,6 +867,7 @@ main(int argc, char **argv)
         free(keys);
     }
 
+    INF("scan for themes");
     /* scan themes */
     cache_theme_scan(efreet_icon_deprecated_user_dir_get());
     cache_theme_scan(efreet_icon_user_dir_get());
@@ -809,17 +899,19 @@ main(int argc, char **argv)
 #ifndef STRICT_SPEC
         if (!theme->theme.name.name) continue;
 #endif
+        INF("scan theme %s", theme->theme.name.name);
 
         changed = EINA_FALSE;
         themes = eina_hash_string_superfast_new(NULL);
 
+        INF("open icon file");
         /* open icon file */
         icon_ef = eet_open(efreet_icon_cache_file(theme->theme.name.internal), EET_FILE_MODE_READ_WRITE);
         if (!icon_ef) goto on_error_efreet;
         icon_version = eet_data_read(icon_ef, efreet_version_edd(), EFREET_CACHE_VERSION);
-        if (icon_version &&
+        if (flush || (icon_version &&
             ((icon_version->major != EFREET_ICON_CACHE_MAJOR) ||
-             (icon_version->minor != EFREET_ICON_CACHE_MINOR)))
+             (icon_version->minor != EFREET_ICON_CACHE_MINOR))))
         {
             // delete old cache
             eet_close(icon_ef);
@@ -851,8 +943,12 @@ main(int argc, char **argv)
             free(keys);
         }
 
-        changed = theme->changed = check_changed(theme);
-        if (theme->changed && theme->dirs)
+        theme->changed = check_changed(theme);
+        if (theme->changed)
+            changed = EINA_TRUE;
+        if (flush)
+            changed = theme->changed = EINA_TRUE;
+        if (changed && theme->dirs)
         {
             efreet_hash_free(theme->dirs, free);
             theme->dirs = NULL;
@@ -860,13 +956,13 @@ main(int argc, char **argv)
         if (!theme->dirs)
             theme->dirs = eina_hash_string_superfast_new(NULL);
 
+        INF("scan icons\n");
         if (cache_scan(&(theme->theme), themes, icons, theme->dirs, &changed))
         {
-            if (verbose)
-                fprintf(stderr, "generated: '%s' %i (%i)\n",
-                        theme->theme.name.internal,
-                        changed,
-                        eina_hash_population(icons));
+            INF("generated: '%s' %i (%i)",
+                theme->theme.name.internal,
+                changed,
+                eina_hash_population(icons));
             if (changed)
             {
                 Eina_Iterator *icons_it;
@@ -882,10 +978,10 @@ main(int argc, char **argv)
         eina_hash_free(themes);
         eina_hash_free(icons);
 
-        if (theme->changed || changed)
+        if (changed)
         {
-            if (theme->changed && verbose)
-                fprintf(stderr, "theme change: %s %lld\n", theme->theme.name.internal, theme->last_cache_check);
+            if (theme->changed)
+                INF("theme change: %s %lld", theme->theme.name.internal, theme->last_cache_check);
             eet_data_write(theme_ef, theme_edd, theme->theme.name.internal, theme, 1);
         }
 
@@ -899,13 +995,14 @@ main(int argc, char **argv)
 
     changed = EINA_FALSE;
 
+    INF("open fallback file");
     /* open icon file */
     icon_ef = eet_open(efreet_icon_cache_file(EFREET_CACHE_ICON_FALLBACK), EET_FILE_MODE_READ_WRITE);
     if (!icon_ef) goto on_error_efreet;
     icon_version = eet_data_read(icon_ef, efreet_version_edd(), EFREET_CACHE_VERSION);
-    if (icon_version &&
+    if (flush || (icon_version &&
         ((icon_version->major != EFREET_ICON_CACHE_MAJOR) ||
-         (icon_version->minor != EFREET_ICON_CACHE_MINOR)))
+         (icon_version->minor != EFREET_ICON_CACHE_MINOR))))
     {
         // delete old cache
         eet_close(icon_ef);
@@ -923,6 +1020,7 @@ main(int argc, char **argv)
     icon_version->major = EFREET_ICON_CACHE_MAJOR;
     icon_version->minor = EFREET_ICON_CACHE_MINOR;
 
+    /* load icons */
     icons = eina_hash_string_superfast_new(NULL);
     keys = eet_list(icon_ef, "*", &num);
     if (keys)
@@ -936,23 +1034,25 @@ main(int argc, char **argv)
         free(keys);
     }
 
+    theme = eet_data_read(theme_ef, theme_edd, EFREET_CACHE_ICON_FALLBACK);
+    if (!theme)
+        theme = NEW(Efreet_Cache_Icon_Theme, 1);
     theme->changed = changed;
-    if (theme->changed && theme->dirs)
+    if (flush)
+        changed = theme->changed = EINA_TRUE;
+    if (changed && theme->dirs)
     {
         efreet_hash_free(theme->dirs, free);
         theme->dirs = NULL;
     }
-    theme = eet_data_read(theme_ef, theme_edd, EFREET_CACHE_ICON_FALLBACK);
-    if (!theme)
-        theme = NEW(Efreet_Cache_Icon_Theme, 1);
     if (!theme->dirs)
         theme->dirs = eina_hash_string_superfast_new(NULL);
 
+    INF("scan fallback icons");
     /* Save fallback in the right part */
     if (cache_fallback_scan(icons, theme->dirs, &changed))
     {
-        if (verbose)
-            fprintf(stderr, "generated: fallback %i (%i)\n", changed, eina_hash_population(icons));
+            WRN("generated: fallback %i (%i)", changed, eina_hash_population(icons));
         if (changed)
         {
             Eina_Iterator *icons_it;
@@ -978,6 +1078,9 @@ main(int argc, char **argv)
 
     /* save data */
     eet_data_write(theme_ef, efreet_version_edd(), EFREET_CACHE_VERSION, theme_version, 1);
+    save_data(theme_ef, exts, EFREET_CACHE_ICON_EXTENSIONS);
+    save_data(theme_ef, extra_dirs, EFREET_CACHE_ICON_EXTRA_DIRS);
+
     eet_close(theme_ef);
     efreet_setowner(efreet_icon_theme_cache_file());
     free(theme_version);
@@ -995,6 +1098,7 @@ main(int argc, char **argv)
         }
     }
 
+    INF("done");
 on_error_efreet:
     efreet_shutdown();
 
@@ -1009,6 +1113,7 @@ on_error:
 
     ecore_shutdown();
     eet_shutdown();
+    eina_log_domain_unregister(_efreet_icon_cache_log_dom);
     eina_shutdown();
 
     return 0;
index 779825f..f909041 100644 (file)
@@ -65,7 +65,7 @@ efreet_base_init(void)
       ("efreet_base", EFREET_DEFAULT_LOG_COLOR);
     if (_efreet_base_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_base.\n");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_base.\n");
         return 0;
     }
     return 1;
index 514f4bc..a84eec2 100644 (file)
@@ -1040,8 +1040,8 @@ cache_update_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
     Efreet_Old_Cache *d = NULL;
     Eina_List *l = NULL;
 
-    if (event != ECORE_FILE_EVENT_CREATED_FILE &&
-        event != ECORE_FILE_EVENT_MODIFIED) return;
+    if (event != ECORE_FILE_EVENT_CLOSED)
+        return;
 
     file = ecore_file_file_get(path);
     if (!file) return;
@@ -1262,8 +1262,8 @@ desktop_cache_update_free(void *data, void *ev)
         EINA_ITERATOR_FOREACH(it, tuple)
         {
             if (tuple->data == NON_EXISTING) continue;
-            printf("Efreet: %d:%s still in cache on cache close!\n",
-                   ((Efreet_Desktop *)tuple->data)->ref, (char *)tuple->key);
+            ERR("%d:%s still in cache on cache close!",
+                ((Efreet_Desktop *)tuple->data)->ref, (char *)tuple->key);
             dangling++;
         }
         eina_iterator_free(it);
@@ -1281,11 +1281,11 @@ desktop_cache_update_free(void *data, void *ev)
     else
     {
         /* TODO: Keep in old_desktop_caches, as we might close ref later */
-        printf("Efreet: ERROR. There are still %i desktop files with old\n"
+        ERR("There are still %i desktop files with old\n"
                "dangling references to desktop files. This application\n"
                "has not handled the EFREET_EVENT_DESKTOP_CACHE_UPDATE\n"
                "fully and released its references. Please fix the application\n"
-               "so it does this.\n",
+               "so it does this.",
                dangling);
     }
     old_desktop_caches = eina_list_remove(old_desktop_caches, d);
index 811d29d..c7d3172 100644 (file)
@@ -11,6 +11,8 @@
 
 #define EFREET_CACHE_VERSION "__efreet//version"
 #define EFREET_CACHE_ICON_FALLBACK "__efreet_fallback"
+#define EFREET_CACHE_ICON_EXTENSIONS "__efreet//icon_extensions"
+#define EFREET_CACHE_ICON_EXTRA_DIRS "__efreet//icon_extra_dirs"
 #define EFREET_CACHE_DESKTOP_DIRS "__efreet//desktop_dirs"
 
 EAPI const char *efreet_desktop_util_cache_file(void);
index b47d28e..64ab9f6 100644 (file)
@@ -114,7 +114,7 @@ efreet_desktop_init(void)
       ("efreet_desktop", EFREET_DEFAULT_LOG_COLOR);
     if (_efreet_desktop_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_desktop");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_desktop");
         return 0;
     }
 
@@ -1204,6 +1204,7 @@ efreet_desktop_changes_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED
         case ECORE_FILE_EVENT_CREATED_FILE:
         case ECORE_FILE_EVENT_DELETED_FILE:
         case ECORE_FILE_EVENT_MODIFIED:
+        case ECORE_FILE_EVENT_CLOSED:
             ext = strrchr(path, '.');
             if (ext && (!strcmp(ext, ".desktop") || !strcmp(ext, ".directory")))
                 efreet_cache_desktop_update();
index 3ce1674..7c746e9 100644 (file)
@@ -964,6 +964,7 @@ efreet_icon_changes_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
         case ECORE_FILE_EVENT_CREATED_FILE:
         case ECORE_FILE_EVENT_DELETED_FILE:
         case ECORE_FILE_EVENT_MODIFIED:
+        case ECORE_FILE_EVENT_CLOSED:
         case ECORE_FILE_EVENT_DELETED_DIRECTORY:
         case ECORE_FILE_EVENT_CREATED_DIRECTORY:
             efreet_cache_icon_update();
index 9d1cffb..5f67517 100644 (file)
@@ -56,7 +56,7 @@ efreet_ini_init(void)
       ("efreet_init", EFREET_DEFAULT_LOG_COLOR);
     if (_efreet_ini_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_init");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_init");
         return 0;
     }
     return 1;
@@ -196,7 +196,7 @@ efreet_ini_parse(const char *file)
             {
                 /* invalid file - skip line? or refuse to parse file? */
                 /* just printf for now till we figure out what to do */
-//                printf("Invalid file (%s) (missing ] on group name)\n", file);
+//                ERR("Invalid file (%s) (missing ] on group name)", file);
             }
             goto next_line;
         }
index f051a85..723f644 100644 (file)
@@ -475,7 +475,7 @@ efreet_menu_init(void)
       ("efreet_menu", EFREET_DEFAULT_LOG_COLOR);
     if (_efreet_menu_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_menu");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_menu");
         return 0;
     }
 
index 2f326bb..472dd3d 100644 (file)
@@ -224,7 +224,7 @@ efreet_mime_init(void)
 
     if (_efreet_mime_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_mime.");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_mime.");
         goto shutdown_efreet;
     }
 
index 7268e8e..b6792a4 100644 (file)
@@ -45,7 +45,7 @@ efreet_trash_init(void)
       ("efreet_trash", EFREET_DEFAULT_LOG_COLOR);
     if (_efreet_trash_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_trash");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_trash");
         eina_shutdown();
         return --_efreet_trash_init_count;
     }
@@ -318,8 +318,9 @@ efreet_trash_ls(void)
     snprintf(buf, sizeof(buf), "%s/files", efreet_trash_dir_get(NULL));
     files = ecore_file_ls(buf);
 
-    EINA_LIST_FOREACH(files, l, infofile)
-        printf("FILE: %s\n", infofile);
+    if (eina_log_domain_level_check(_efreet_trash_log_dom, EINA_LOG_LEVEL_INFO))
+        EINA_LIST_FOREACH(files, l, infofile)
+            INF("FILE: %s\n", infofile);
 
     return files;
 }
index ff212da..dae5851 100644 (file)
@@ -61,7 +61,7 @@ efreet_util_init(void)
       ("efreet_util", EFREET_DEFAULT_LOG_COLOR);
     if (_efreet_utils_log_dom < 0)
     {
-        ERR("Efreet: Could not create a log domain for efreet_util");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_util");
         return 0;
     }
 
index 281e1c9..ea389d1 100644 (file)
@@ -56,7 +56,7 @@ efreet_xml_init(void)
     if (_efreet_xml_log_dom < 0)
     {
         _efreet_xml_init_count--;
-        ERR("Efreet: Could not create a log domain for efreet_xml.");
+        EINA_LOG_ERR("Efreet: Could not create a log domain for efreet_xml.");
         return _efreet_xml_init_count;
     }
     return _efreet_xml_init_count;