From: Enlightenment S. <no-...@en...> - 2008-10-25 15:06:36
|
Log: support setting the default menu explicitly. Author: raster Date: 2008-10-25 08:06:31 -0700 (Sat, 25 Oct 2008) New Revision: 37098 Modified: trunk/efreet/src/lib/efreet_menu.c trunk/efreet/src/lib/efreet_menu.h Modified: trunk/efreet/src/lib/efreet_menu.c =================================================================== --- trunk/efreet/src/lib/efreet_menu.c 2008-10-25 14:06:26 UTC (rev 37097) +++ trunk/efreet/src/lib/efreet_menu.c 2008-10-25 15:06:31 UTC (rev 37098) @@ -210,6 +210,7 @@ static char *efreet_menu_prefix = NULL; /**< The $XDG_MENU_PREFIX env var */ Ecore_List *efreet_menu_kde_legacy_dirs = NULL; /**< The directories to use for KDELegacy entries */ static const char *efreet_tag_menu = NULL; +static char *efreet_menu_file = NULL; /**< A menu file set explicityl as default */ static Ecore_Hash *efreet_merged_menus = NULL; static Ecore_Hash *efreet_merged_dirs = NULL; @@ -538,6 +539,7 @@ efreet_menu_shutdown(void) { IF_FREE(efreet_menu_prefix); + IF_FREE(efreet_menu_file); IF_FREE_HASH(efreet_menu_handle_cbs); IF_FREE_HASH(efreet_menu_filter_cbs); @@ -564,6 +566,14 @@ return menu; } +EAPI void +efreet_menu_file_set(const char *file) +{ + IF_FREE(efreet_menu_file); + efreet_menu_file = NULL; + if (file) efreet_menu_file = strdup(file); +} + /** * @return Returns the Efreet_Menu_Internal representation of the default menu or * NULL if none found @@ -582,6 +592,12 @@ if (ecore_file_exists(menu)) return efreet_menu_parse(menu); + if (efreet_menu_file) + { + if (ecore_file_exists(efreet_menu_file)) + return efreet_menu_parse(efreet_menu_file); + } + /* fallback to the XDG_CONFIG_DIRS */ config_dirs = efreet_config_dirs_get(); ecore_list_first_goto(config_dirs); Modified: trunk/efreet/src/lib/efreet_menu.h =================================================================== --- trunk/efreet/src/lib/efreet_menu.h 2008-10-25 14:06:26 UTC (rev 37097) +++ trunk/efreet/src/lib/efreet_menu.h 2008-10-25 15:06:31 UTC (rev 37098) @@ -52,6 +52,7 @@ EAPI int efreet_menu_kde_legacy_init(void); EAPI Efreet_Menu *efreet_menu_new(void); +EAPI void efreet_menu_file_set(const char *file); EAPI Efreet_Menu *efreet_menu_get(void); EAPI Efreet_Menu *efreet_menu_parse(const char *path); EAPI int efreet_menu_save(Efreet_Menu *menu, const char *path); |
From: Enlightenment S. <no-...@en...> - 2009-01-29 07:37:03
|
Log: a really simple hash cache for icon finds - this massively makes stuff faster for app dialogs etc. yes - it uses ram. thats next - make it leaner on ram usage. its simple enough now where that shouldnt be a problem. Author: raster Date: 2009-01-28 23:36:58 -0800 (Wed, 28 Jan 2009) New Revision: 38839 Added: trunk/efreet/src/lib/efreet_cache.c Modified: trunk/efreet/src/lib/Makefile.am trunk/efreet/src/lib/efreet_icon.c trunk/efreet/src/lib/efreet_private.h trunk/efreet/src/lib/efreet_utils.c Modified: trunk/efreet/src/lib/Makefile.am =================================================================== --- trunk/efreet/src/lib/Makefile.am 2009-01-29 07:25:17 UTC (rev 38838) +++ trunk/efreet/src/lib/Makefile.am 2009-01-29 07:36:58 UTC (rev 38839) @@ -31,6 +31,7 @@ efreet_uri.c \ efreet_private.h \ efreet_xml.h \ +efreet_cache.c \ $(EFREETHEADERS) libefreet_la_SOURCES = \ Added: trunk/efreet/src/lib/efreet_cache.c Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2009-01-29 07:25:17 UTC (rev 38838) +++ trunk/efreet/src/lib/efreet_icon.c 2009-01-29 07:36:58 UTC (rev 38839) @@ -2,8 +2,6 @@ #include "Efreet.h" #include "efreet_private.h" -#define NON_EXISTING (void *)-1 - static char *efreet_icon_deprecated_user_dir = NULL; static char *efreet_icon_user_dir = NULL; static Eina_Hash *efreet_icon_themes = NULL; @@ -346,6 +344,11 @@ char *value = NULL; Efreet_Icon_Theme *theme; + if ((value = efreet_icon_hash_get(theme_name, icon, size)) != NULL) + { + if (value == NON_EXISTING) return NULL; + return strdup(value); + } theme = efreet_icon_find_theme_check(theme_name); #ifdef SLOPPY_SPEC @@ -365,6 +368,8 @@ */ if (!value || (value == NON_EXISTING)) value = efreet_icon_fallback_icon(icon); + efreet_icon_hash_put(theme_name, icon, size, value); + if (value == NON_EXISTING) value = NULL; return value; } Modified: trunk/efreet/src/lib/efreet_private.h =================================================================== --- trunk/efreet/src/lib/efreet_private.h 2009-01-29 07:25:17 UTC (rev 38838) +++ trunk/efreet/src/lib/efreet_private.h 2009-01-29 07:36:58 UTC (rev 38839) @@ -198,6 +198,12 @@ const char *efreet_desktop_environment_get(void); +#define NON_EXISTING (void *)-1 + +void efreet_cache_clear(void); +const char *efreet_icon_hash_get(const char *theme_name, const char *icon, int size); +void efreet_icon_hash_put(const char *theme_name, const char *icon, int size, const char *file); + /** * @} */ Modified: trunk/efreet/src/lib/efreet_utils.c =================================================================== --- trunk/efreet/src/lib/efreet_utils.c 2009-01-29 07:25:17 UTC (rev 38838) +++ trunk/efreet/src/lib/efreet_utils.c 2009-01-29 07:36:58 UTC (rev 38839) @@ -514,6 +514,7 @@ free(fill); idler = NULL; fill = NULL; + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_LIST_CHANGE, NULL, NULL, NULL); return 0; @@ -532,6 +533,7 @@ eina_hash_foreach(file_id_by_desktop_path, dump, NULL); printf("%d\n", eina_hash_population(desktop_by_file_id)); #endif + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_LIST_CHANGE, NULL, NULL, NULL); return 0; @@ -634,6 +636,7 @@ ev->current = desktop; efreet_desktop_ref(ev->current); ev->change = EFREET_DESKTOP_CHANGE_ADD; + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, efreet_event_desktop_change_free, NULL); } } @@ -654,6 +657,7 @@ ev->change = EFREET_DESKTOP_CHANGE_UPDATE; efreet_desktop_free(ud->desktop); ud->desktop = desktop; + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, efreet_event_desktop_change_free, NULL); } else @@ -685,6 +689,7 @@ ev->current = ud->desktop; efreet_desktop_ref(ev->current); ev->change = EFREET_DESKTOP_CHANGE_REMOVE; + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, efreet_event_desktop_change_free, NULL); eina_hash_del(desktop_by_file_id, file_id, ud); @@ -733,6 +738,7 @@ ev->previous = ud->desktop; efreet_desktop_ref(ev->previous); ev->change = EFREET_DESKTOP_CHANGE_UPDATE; + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, efreet_event_desktop_change_free, NULL); efreet_desktop_free(ud->desktop); @@ -754,6 +760,7 @@ ev->current = desktop; efreet_desktop_ref(ev->current); ev->change = EFREET_DESKTOP_CHANGE_ADD; + efreet_cache_clear(); ecore_event_add(EFREET_EVENT_DESKTOP_CHANGE, ev, efreet_event_desktop_change_free, NULL); } } |
From: Enlightenment S. <no-...@en...> - 2009-02-26 03:46:46
|
Log: fix custom icon dirs api so u CAN add to the icon dirs! Author: raster Date: 2009-02-25 19:46:35 -0800 (Wed, 25 Feb 2009) New Revision: 39226 Modified: trunk/efreet/src/lib/efreet_icon.c trunk/efreet/src/lib/efreet_icon.h Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2009-02-26 02:13:34 UTC (rev 39225) +++ trunk/efreet/src/lib/efreet_icon.c 2009-02-26 03:46:35 UTC (rev 39226) @@ -204,10 +204,10 @@ * from first to last directory in this list. the strings in the list should * be created with eina_stringshare_add(). */ -EAPI Eina_List * +EAPI Eina_List ** efreet_icon_extra_list_get(void) { - return efreet_extra_icon_dirs; + return &efreet_extra_icon_dirs; } static Eina_Bool Modified: trunk/efreet/src/lib/efreet_icon.h =================================================================== --- trunk/efreet/src/lib/efreet_icon.h 2009-02-26 02:13:34 UTC (rev 39225) +++ trunk/efreet/src/lib/efreet_icon.h 2009-02-26 03:46:35 UTC (rev 39226) @@ -155,7 +155,7 @@ EAPI const char *efreet_icon_user_dir_get(void); EAPI void efreet_icon_extension_add(const char *ext); -EAPI Eina_List *efreet_icon_extra_list_get(void); +EAPI Eina_List **efreet_icon_extra_list_get(void); EAPI Eina_List *efreet_icon_theme_list_get(void); EAPI Efreet_Icon_Theme *efreet_icon_theme_find(const char *theme_name); EAPI Efreet_Icon *efreet_icon_find(const char *theme_name, |
From: Enlightenment S. <no-...@en...> - 2009-03-19 04:29:36
|
Log: and somewhere.. someone broke system settings and efreet hashes of categories! Author: raster Date: 2009-03-18 21:29:31 -0700 (Wed, 18 Mar 2009) New Revision: 39570 Modified: trunk/efreet/src/lib/efreet_utils.c Modified: trunk/efreet/src/lib/efreet_utils.c =================================================================== --- trunk/efreet/src/lib/efreet_utils.c 2009-03-19 02:08:09 UTC (rev 39569) +++ trunk/efreet/src/lib/efreet_utils.c 2009-03-19 04:29:31 UTC (rev 39570) @@ -497,17 +497,17 @@ EAPI Eina_List * efreet_util_desktop_categories_list(void) { - Eina_Iterator *it; - Eina_List *list = NULL; - - it = eina_hash_iterator_key_new(desktops_by_category); - if (it) - { + Eina_Iterator *it; + Eina_List *list = NULL; + + it = eina_hash_iterator_key_new(desktops_by_category); + if (it) + { eina_iterator_foreach(it, EINA_EACH(_hash_keys), &list); - eina_iterator_free(it); - } - - return list; + eina_iterator_free(it); + } + + return list; } /** @@ -1144,41 +1144,46 @@ static void efreet_util_desktops_by_category_add(Efreet_Desktop *desktop) { - Eina_List *l; - const char *category; - - if (!desktop->categories) return; - - EINA_LIST_FOREACH(desktop->categories, l, category) - { + Eina_List *l; + const char *category; + + if (!desktop->categories) return; + + EINA_LIST_FOREACH(desktop->categories, l, category) + { Eina_List *list; + int newlist = 0; list = eina_hash_find(desktops_by_category, category); + if (!list) newlist = 1; if (!eina_list_data_find(list, desktop)) - list = eina_list_append(list, desktop); - eina_hash_modify(desktops_by_category, category, list); - } + list = eina_list_append(list, desktop); + if (newlist) + eina_hash_add(desktops_by_category, category, list); + else + eina_hash_modify(desktops_by_category, category, list); + } } static void efreet_util_desktops_by_category_remove(Efreet_Desktop *desktop) { - Eina_List *l; - const char *category; - - if (!desktop->categories) return; - - EINA_LIST_FOREACH(desktop->categories, l, category) - { + Eina_List *l; + const char *category; + + if (!desktop->categories) return; + + EINA_LIST_FOREACH(desktop->categories, l, category) + { Eina_List *list; list = eina_hash_find(desktops_by_category, category); if (!list) continue; if (eina_list_data_find(list, desktop)) - list = eina_list_remove(list, desktop); + list = eina_list_remove(list, desktop); if (!list) eina_hash_del(desktops_by_category, category, list); else - eina_hash_modify(desktops_by_category, category, list); - } + eina_hash_modify(desktops_by_category, category, list); + } } static void |
From: Enlightenment S. <no-...@en...> - 2009-03-23 10:28:06
|
Log: leaks--! this code is riddled with leaks! really really bad! Author: raster Date: 2009-03-23 03:27:54 -0700 (Mon, 23 Mar 2009) New Revision: 39647 Modified: trunk/efreet/src/lib/efreet_icon.c trunk/efreet/src/lib/efreet_menu.c trunk/efreet/src/lib/efreet_mime.c trunk/efreet/src/lib/efreet_utils.c Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2009-03-23 10:19:13 UTC (rev 39646) +++ trunk/efreet/src/lib/efreet_icon.c 2009-03-23 10:27:54 UTC (rev 39647) @@ -66,6 +66,7 @@ static Efreet_Icon_Theme_Directory *efreet_icon_theme_directory_new(Efreet_Ini *ini, const char *name); +static void efreet_icon_theme_directory_free(Efreet_Icon_Theme_Directory *dir); static void efreet_icon_theme_cache_check(Efreet_Icon_Theme *theme); static int efreet_icon_theme_cache_check_dir(Efreet_Icon_Theme *theme, @@ -131,18 +132,26 @@ void efreet_icon_shutdown(void) { + void *d; + if (--efreet_icon_init_count) return; IF_FREE(efreet_icon_user_dir); IF_FREE(efreet_icon_deprecated_user_dir); - IF_FREE_LIST(efreet_icon_extensions); + EINA_LIST_FREE(efreet_icon_extensions, d) free(d); IF_FREE_HASH(efreet_icon_themes); IF_FREE_LIST(efreet_extra_icon_dirs); IF_FREE_HASH(efreet_icon_cache); + if (fake_null) + { + efreet_icon_theme_free(fake_null); + fake_null = NULL; + } + ecore_shutdown(); efreet_icon_init_count = 0; } @@ -324,6 +333,7 @@ if (theme_name) theme = efreet_icon_theme_find(theme_name); if (!theme) { + if ((fake_null) && (!theme_name)) return fake_null; theme = efreet_icon_theme_new(); theme->fake = 1; if (theme_name) @@ -1107,19 +1117,20 @@ static void efreet_icon_theme_free(Efreet_Icon_Theme *theme) { - if (!theme) return; + void *d; + if (!theme) return; - IF_RELEASE(theme->name.internal); - IF_RELEASE(theme->name.name); + IF_RELEASE(theme->name.internal); + IF_RELEASE(theme->name.name); + + IF_FREE(theme->comment); + IF_FREE(theme->example_icon); - IF_FREE(theme->comment); - IF_FREE(theme->example_icon); + EINA_LIST_FREE(theme->paths, d) free(d); + EINA_LIST_FREE(theme->inherits, d) free(d); + EINA_LIST_FREE(theme->directories, d) efreet_icon_theme_directory_free(d); - IF_FREE_LIST(theme->paths); - IF_FREE_LIST(theme->inherits); - IF_FREE_LIST(theme->directories); - - FREE(theme); + FREE(theme); } /** @@ -1490,6 +1501,13 @@ return dir; } +static void +efreet_icon_theme_directory_free(Efreet_Icon_Theme_Directory *dir) +{ + free(dir->name); + free(dir); +} + static int efreet_icon_cache_find(Efreet_Icon_Cache *value, const char *key) { Modified: trunk/efreet/src/lib/efreet_menu.c =================================================================== --- trunk/efreet/src/lib/efreet_menu.c 2009-03-23 10:19:13 UTC (rev 39646) +++ trunk/efreet/src/lib/efreet_menu.c 2009-03-23 10:27:54 UTC (rev 39647) @@ -280,6 +280,7 @@ static char *efreet_menu_path_get(Efreet_Menu_Internal *internal, const char *suffix); static Efreet_Menu_App_Dir *efreet_menu_app_dir_new(void); +static void efreet_menu_app_dir_free(Efreet_Menu_App_Dir *dir); static Efreet_Menu_Move *efreet_menu_move_new(void); static void efreet_menu_move_free(Efreet_Menu_Move *move); @@ -987,6 +988,8 @@ void efreet_menu_internal_free(Efreet_Menu_Internal *internal) { + void *d; + if (!internal) return; IF_FREE(internal->file.path); @@ -998,7 +1001,8 @@ IF_FREE_LIST(internal->applications); IF_FREE_DLIST(internal->directories); - IF_FREE_LIST(internal->app_dirs); + EINA_LIST_FREE(internal->app_dirs, d) efreet_menu_app_dir_free(d); +// IF_FREE_LIST(internal->app_dirs); IF_FREE_LIST(internal->app_pool); IF_FREE_DLIST(internal->directory_dirs); IF_FREE_HASH(internal->directory_cache); @@ -1723,7 +1727,10 @@ snprintf(dir_path, PATH_MAX, "%s/%s", path, file->d_name); if (!efreet_menu_merge(parent, xml, dir_path)) + { + closedir(files); return 0; + } } closedir(files); @@ -1895,6 +1902,7 @@ legacy_internal, file_path, prefix); if (!ret) { + efreet_menu_filter_free(filter); efreet_menu_internal_free(legacy_internal); FREE(path); closedir(files); @@ -1947,6 +1955,7 @@ closedir(files); FREE(path); + efreet_menu_filter_free(filter); return legacy_internal; } @@ -3198,6 +3207,14 @@ return dir; } +static void +efreet_menu_app_dir_free(Efreet_Menu_App_Dir *dir) +{ + free(dir->path); + free(dir->prefix); + free(dir); +} + /** * @internal * @param a: The app dir to compare too @@ -3233,6 +3250,7 @@ if (!internal || internal->directory_dirs) return; internal->directory_dirs = ecore_dlist_new(); + ecore_dlist_free_cb_set(internal->directory_dirs, free); } static void @@ -3273,6 +3291,7 @@ if (!internal || internal->directories) return; internal->directories = ecore_dlist_new(); + ecore_dlist_free_cb_set(internal->directories, free); } static char * Modified: trunk/efreet/src/lib/efreet_mime.c =================================================================== --- trunk/efreet/src/lib/efreet_mime.c 2009-03-23 10:19:13 UTC (rev 39646) +++ trunk/efreet/src/lib/efreet_mime.c 2009-03-23 10:27:54 UTC (rev 39647) @@ -186,6 +186,8 @@ EAPI void efreet_mime_shutdown(void) { + void *d; + if (_init_count == 0) return; _init_count--; @@ -194,8 +196,8 @@ efreet_mime_icons_debug(); - IF_FREE_LIST(globs); - IF_FREE_LIST(magics); + EINA_LIST_FREE(globs, d) efreet_mime_glob_free(d); + EINA_LIST_FREE(magics, d) efreet_mime_magic_free(d); IF_FREE_HASH(monitors); IF_FREE_HASH(wild); IF_FREE_HASH(mime_icons); @@ -1125,13 +1127,14 @@ } } } - +/* if (entry) { IF_FREE(entry->value); IF_FREE(entry->mask); FREE(entry); } + */ } /** Modified: trunk/efreet/src/lib/efreet_utils.c =================================================================== --- trunk/efreet/src/lib/efreet_utils.c 2009-03-23 10:19:13 UTC (rev 39646) +++ trunk/efreet/src/lib/efreet_utils.c 2009-03-23 10:27:54 UTC (rev 39647) @@ -540,7 +540,7 @@ double start; char buf[PATH_MAX]; - if (!fill->dirs) + if ((!fill->dirs) && (!fill->files)) { free(fill); idler = NULL; @@ -579,8 +579,11 @@ } start = ecore_time_get(); - if (!fill->files) fill->files = opendir(fill->current->path); if (!fill->files) + { + fill->files = opendir(fill->current->path); + } + if (!fill->files) { /* Couldn't open this dir, continue to next */ efreet_util_cache_dir_free(fill->current); |
From: Enlightenment S. <no-...@en...> - 2009-03-23 13:16:20
|
Log: menu segv fix! my bad! overzealous freeing Author: raster Date: 2009-03-23 06:16:10 -0700 (Mon, 23 Mar 2009) New Revision: 39653 Modified: trunk/efreet/src/lib/efreet_menu.c Modified: trunk/efreet/src/lib/efreet_menu.c =================================================================== --- trunk/efreet/src/lib/efreet_menu.c 2009-03-23 13:04:02 UTC (rev 39652) +++ trunk/efreet/src/lib/efreet_menu.c 2009-03-23 13:16:10 UTC (rev 39653) @@ -1902,7 +1902,6 @@ legacy_internal, file_path, prefix); if (!ret) { - efreet_menu_filter_free(filter); efreet_menu_internal_free(legacy_internal); FREE(path); closedir(files); @@ -1955,7 +1954,6 @@ closedir(files); FREE(path); - efreet_menu_filter_free(filter); return legacy_internal; } |
From: Enlightenment S. <no-...@en...> - 2009-05-15 11:48:22
|
Log: more patches... Author: raster Date: 2009-05-15 04:47:39 -0700 (Fri, 15 May 2009) New Revision: 40669 Modified: trunk/efreet/src/lib/efreet_desktop.c trunk/efreet/src/lib/efreet_desktop.h Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2009-05-15 11:47:28 UTC (rev 40668) +++ trunk/efreet/src/lib/efreet_desktop.c 2009-05-15 11:47:39 UTC (rev 40669) @@ -429,7 +429,7 @@ Efreet_Ini *ini; int ok = 1; - ini = efreet_ini_new(desktop->orig_path); + ini = efreet_ini_new(NULL); efreet_ini_section_add(ini, "Desktop Entry"); efreet_ini_section_set(ini, "Desktop Entry"); @@ -1838,3 +1838,48 @@ /* just dup an already absolute buffer */ return strdup(path); } + +EAPI Eina_Bool +efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char *data) +{ + if (!desktop || strncmp(key, "X-", 2)) + return EINA_FALSE; + + if (!desktop->x) + desktop->x = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del)); + + eina_hash_del(desktop->x, key, NULL); + eina_hash_add(desktop->x, key, eina_stringshare_add(data)); + + return EINA_TRUE; +} + +EAPI const char * +efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key) +{ + const char *ret; + + if (!desktop || strncmp(key, "X-", 2)) + return NULL; + + if (!desktop->x) + return NULL; + + ret = eina_hash_find(desktop->x, key); + if (!ret) + return NULL; + + return eina_stringshare_add(ret); +} + +EAPI Eina_Bool +efreet_desktop_x_field_del(Efreet_Desktop *desktop, const char *key) +{ + if (!desktop || strncmp(key, "X-", 2)) + return EINA_FALSE; + + if (!desktop->x) + return EINA_FALSE; + + return eina_hash_del(desktop->x, key, NULL); +} Modified: trunk/efreet/src/lib/efreet_desktop.h =================================================================== --- trunk/efreet/src/lib/efreet_desktop.h 2009-05-15 11:47:28 UTC (rev 40668) +++ trunk/efreet/src/lib/efreet_desktop.h 2009-05-15 11:47:39 UTC (rev 40669) @@ -136,6 +136,10 @@ EAPI Eina_List *efreet_desktop_string_list_parse(const char *string); EAPI char *efreet_desktop_string_list_join(Eina_List *list); +EAPI Eina_Bool efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char *data); +EAPI const char * efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key); +EAPI Eina_Bool efreet_desktop_x_field_del(Efreet_Desktop *desktop, const char *key); + EAPI void efreet_desktop_cache_flush(void); /** |
From: Enlightenment S. <no-...@en...> - 2009-06-14 20:14:04
|
Log: patch from dfjoerg - fix prefix handling for eet. Author: raster Date: 2009-06-14 13:13:58 -0700 (Sun, 14 Jun 2009) New Revision: 41031 Modified: trunk/efreet/src/lib/Makefile.am trunk/efreet/src/lib/efreet_base.c Modified: trunk/efreet/src/lib/Makefile.am =================================================================== --- trunk/efreet/src/lib/Makefile.am 2009-06-14 19:26:48 UTC (rev 41030) +++ trunk/efreet/src/lib/Makefile.am 2009-06-14 20:13:58 UTC (rev 41031) @@ -31,6 +31,7 @@ libefreet_la_SOURCES = \ $(EFREETSOURCES) libefreet_la_CPPFLAGS = \ +-DDATADIR=\"$(datadir)\" \ -I$(top_builddir) \ -I$(top_srcdir) \ @EFL_EFREET_BUILD@ \ Modified: trunk/efreet/src/lib/efreet_base.c =================================================================== --- trunk/efreet/src/lib/efreet_base.c 2009-06-14 19:26:48 UTC (rev 41030) +++ trunk/efreet/src/lib/efreet_base.c 2009-06-14 20:13:58 UTC (rev 41031) @@ -98,7 +98,7 @@ { if (xdg_data_dirs) return xdg_data_dirs; xdg_data_dirs = efreet_dirs_get("XDG_DATA_DIRS", - "/usr/local/share:/usr/share"); + DATADIR ":/usr/share"); return xdg_data_dirs; } |
From: Enlightenment S. <no-...@en...> - 2009-09-14 00:39:06
|
Log: moe enume typedefs together. typedef before enum is bad for some compilrs... like g++.. or suncc... dod so in all headers anyay for consistency Author: raster Date: 2009-09-13 17:38:59 -0700 (Sun, 13 Sep 2009) New Revision: 42477 Modified: trunk/efreet/src/lib/efreet_icon.h trunk/efreet/src/lib/efreet_menu.h trunk/efreet/src/lib/efreet_private.h trunk/efreet/src/lib/efreet_utils.h Modified: trunk/efreet/src/lib/efreet_icon.h =================================================================== --- trunk/efreet/src/lib/efreet_icon.h 2009-09-14 00:32:44 UTC (rev 42476) +++ trunk/efreet/src/lib/efreet_icon.h 2009-09-14 00:38:59 UTC (rev 42477) @@ -15,37 +15,27 @@ /** * The possible contexts for an icon directory */ -enum Efreet_Icon_Theme_Context +typedef enum Efreet_Icon_Theme_Context { EFREET_ICON_THEME_CONTEXT_NONE, EFREET_ICON_THEME_CONTEXT_ACTIONS, EFREET_ICON_THEME_CONTEXT_DEVICES, EFREET_ICON_THEME_CONTEXT_FILESYSTEMS, EFREET_ICON_THEME_CONTEXT_MIMETYPES -}; +} Efreet_Icon_Theme_Context; /** - * Efreet_icon_Theme_Context - */ -typedef enum Efreet_Icon_Theme_Context Efreet_Icon_Theme_Context; - -/** * The possible size types for an icon directory */ -enum Efreet_Icon_Size_Type +typedef enum Efreet_Icon_Size_Type { EFREET_ICON_SIZE_TYPE_NONE, EFREET_ICON_SIZE_TYPE_FIXED, EFREET_ICON_SIZE_TYPE_SCALABLE, EFREET_ICON_SIZE_TYPE_THRESHOLD -}; +} Efreet_Icon_Size_Type; /** - * Efreet_Icon_Size_Type - */ -typedef enum Efreet_Icon_Size_Type Efreet_Icon_Size_Type; - -/** * Efreet_Icon_Theme */ typedef struct Efreet_Icon_Theme Efreet_Icon_Theme; Modified: trunk/efreet/src/lib/efreet_menu.h =================================================================== --- trunk/efreet/src/lib/efreet_menu.h 2009-09-14 00:32:44 UTC (rev 42476) +++ trunk/efreet/src/lib/efreet_menu.h 2009-09-14 00:38:59 UTC (rev 42477) @@ -15,20 +15,15 @@ /** * The type of entry */ -enum Efreet_Menu_Entry_Type +typedef enum Efreet_Menu_Entry_Type { EFREET_MENU_ENTRY_MENU, EFREET_MENU_ENTRY_DESKTOP, EFREET_MENU_ENTRY_SEPARATOR, EFREET_MENU_ENTRY_HEADER -}; +} Efreet_Menu_Entry_Type; /** - * Efreet_Menu_Entry_Type - */ -typedef enum Efreet_Menu_Entry_Type Efreet_Menu_Entry_Type; - -/** * Efreet_Menu */ typedef struct Efreet_Menu Efreet_Menu; Modified: trunk/efreet/src/lib/efreet_private.h =================================================================== --- trunk/efreet/src/lib/efreet_private.h 2009-09-14 00:32:44 UTC (rev 42476) +++ trunk/efreet/src/lib/efreet_private.h 2009-09-14 00:38:59 UTC (rev 42477) @@ -75,22 +75,16 @@ * @internal * The different types of commands in an Exec entry */ -enum Efreet_Desktop_Command_Flag +typedef enum Efreet_Desktop_Command_Flag { EFREET_DESKTOP_EXEC_FLAG_FULLPATH = 0x0001, EFREET_DESKTOP_EXEC_FLAG_URI = 0x0002, EFREET_DESKTOP_EXEC_FLAG_DIR = 0x0004, EFREET_DESKTOP_EXEC_FLAG_FILE = 0x0008 -}; +} Efreet_Desktop_Command_Flag; /** * @internal - * Efreet_Desktop_Command_Flag - */ -typedef enum Efreet_Desktop_Command_Flag Efreet_Desktop_Command_Flag; - -/** - * @internal * Efreet_Desktop_Command */ typedef struct Efreet_Desktop_Command Efreet_Desktop_Command; Modified: trunk/efreet/src/lib/efreet_utils.h =================================================================== --- trunk/efreet/src/lib/efreet_utils.h 2009-09-14 00:32:44 UTC (rev 42476) +++ trunk/efreet/src/lib/efreet_utils.h 2009-09-14 00:38:59 UTC (rev 42477) @@ -2,14 +2,12 @@ #ifndef EFREET_UTILS_H #define EFREET_UTILS_H -typedef enum _Efreet_Desktop_Change Efreet_Desktop_Change; - -enum _Efreet_Desktop_Change +typedef enum _Efreet_Desktop_Change { EFREET_DESKTOP_CHANGE_ADD, EFREET_DESKTOP_CHANGE_REMOVE, EFREET_DESKTOP_CHANGE_UPDATE -}; +} Efreet_Desktop_Change; typedef struct _Efreet_Event_Desktop_Change Efreet_Event_Desktop_Change; |
From: Enlightenment S. <no-...@en...> - 2009-10-23 00:01:33
|
Log: fix xml init - called multilpe times, has no count for init + shutdown. Author: raster Date: 2009-10-22 17:01:15 -0700 (Thu, 22 Oct 2009) New Revision: 43222 Modified: trunk/efreet/src/lib/efreet_xml.c Modified: trunk/efreet/src/lib/efreet_xml.c =================================================================== --- trunk/efreet/src/lib/efreet_xml.c 2009-10-22 22:33:06 UTC (rev 43221) +++ trunk/efreet/src/lib/efreet_xml.c 2009-10-23 00:01:15 UTC (rev 43222) @@ -44,6 +44,7 @@ #endif #define EFREET_MODULE_LOG_DOM _efreet_xml_log_dom +static int _efreet_xml_init_count = 0; static int _efreet_xml_log_dom = -1; /** @@ -54,13 +55,16 @@ int efreet_xml_init(void) { - _efreet_xml_log_dom = eina_log_domain_register("Efreet_xml", EFREET_DEFAULT_LOG_COLOR); - if (_efreet_xml_log_dom < 0) - { + _efreet_xml_init_count++; + if (_efreet_xml_init_count > 1) return _efreet_xml_init_count; + _efreet_xml_log_dom = eina_log_domain_register("Efreet_xml", EFREET_DEFAULT_LOG_COLOR); + if (_efreet_xml_log_dom < 0) + { + _efreet_xml_init_count--; ERROR("Efreet: Could not create a log domain for Efreet_xml."); - return 0; - } - return 1; + return _efreet_xml_init_count; + } + return _efreet_xml_init_count; } /** @@ -71,7 +75,9 @@ void efreet_xml_shutdown(void) { - eina_log_domain_unregister(_efreet_xml_log_dom); + _efreet_xml_init_count--; + if (_efreet_xml_init_count > 0) return; + eina_log_domain_unregister(_efreet_xml_log_dom); } /** |
From: Enlightenment S. <no-...@en...> - 2010-03-30 05:15:40
|
Log: comment++ Author: raster Date: 2010-03-29 22:15:33 -0700 (Mon, 29 Mar 2010) New Revision: 47577 Modified: trunk/efreet/src/lib/efreet_desktop.c Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2010-03-30 05:03:57 UTC (rev 47576) +++ trunk/efreet/src/lib/efreet_desktop.c 2010-03-30 05:15:33 UTC (rev 47577) @@ -745,6 +745,10 @@ eina_list_free(desktop->categories); eina_list_free(desktop->mime_types); IF_FREE_HASH(desktop->x); + // FIXME: loaded from eet. eet data descriptior is the default eina + // setup that means all strings are "eina_stringshare_add()"ed. this + // means we need to eina_stringshare_del() them here - until this is + // no longer the case (they are directly mmaped) } else { |
From: Enlightenment S. <no-...@en...> - 2010-03-30 05:29:56
|
Log: hmm - avoid crash for now, but bitch loudly Author: raster Date: 2010-03-29 22:29:49 -0700 (Mon, 29 Mar 2010) New Revision: 47581 Modified: trunk/efreet/src/lib/efreet_desktop.c Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2010-03-30 05:26:14 UTC (rev 47580) +++ trunk/efreet/src/lib/efreet_desktop.c 2010-03-30 05:29:49 UTC (rev 47581) @@ -2236,27 +2236,48 @@ static void efreet_desktop_cache_update_free(void *data, void *ev) { - Efreet_Event_Cache_Data *d; - - d = data; - /* - * All users should now had the chance to update their pointers, so we can now - * free the old cache - */ - if (d->desktop_cache) - { + Efreet_Event_Cache_Data *d; + int dangling = 0; + + d = data; + /* + * All users should now had the chance to update their pointers, so we can now + * free the old cache + */ + if (d->desktop_cache) + { Eina_Iterator *it; Eina_Hash_Tuple *tuple; - + it = eina_hash_iterator_tuple_new(d->desktop_cache); EINA_ITERATOR_FOREACH(it, tuple) - printf("Efreet: %d:%s still in cache on cache close!\n", ((Efreet_Desktop *)tuple->data)->ref, tuple->key); + { + printf("Efreet: %d:%s still in cache on cache close!\n", + ((Efreet_Desktop *)tuple->data)->ref, tuple->key); + dangling++; + } eina_iterator_free(it); - + eina_hash_free(d->desktop_cache); - } - if (d->cache) eet_close(d->cache); - cache_data = eina_list_remove(cache_data, d); - free(d); - free(ev); + } + /* + * If there are dangling references the eet file won't be closed - to + * avoid crashes, but this will leak instead. + */ + if (dangling == 0) + { + if (d->cache) eet_close(d->cache); + } + else + { + printf("Efreet: ERROR. There are still %i desktop files with old\n" + "dangling references to desktop files. This application\n" + "has not handled the EFREET_EVENT_CACHE_UPDATE fully and\n" + "released its references. Please fix the application so\n" + "it does this.\n", + dangling); + } + cache_data = eina_list_remove(cache_data, d); + free(d); + free(ev); } |
From: Enlightenment S. <no-...@en...> - 2010-03-30 12:44:44
|
Log: fixme-- ... my bad! looking at wrong fn! :) Author: raster Date: 2010-03-30 05:44:37 -0700 (Tue, 30 Mar 2010) New Revision: 47598 Modified: trunk/efreet/src/lib/efreet_desktop.c Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2010-03-30 12:22:15 UTC (rev 47597) +++ trunk/efreet/src/lib/efreet_desktop.c 2010-03-30 12:44:37 UTC (rev 47598) @@ -745,10 +745,6 @@ eina_list_free(desktop->categories); eina_list_free(desktop->mime_types); IF_FREE_HASH(desktop->x); - // FIXME: loaded from eet. eet data descriptior is the default eina - // setup that means all strings are "eina_stringshare_add()"ed. this - // means we need to eina_stringshare_del() them here - until this is - // no longer the case (they are directly mmaped) } else { |
From: Enlightenment S. <no-...@en...> - 2010-04-16 02:21:03
|
Log: how about if opendir fails... we dont try and walk the dir? :) Author: raster Date: 2010-04-15 19:20:56 -0700 (Thu, 15 Apr 2010) New Revision: 48047 Modified: trunk/efreet/src/lib/efreet_desktop.c Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2010-04-16 02:01:53 UTC (rev 48046) +++ trunk/efreet/src/lib/efreet_desktop.c 2010-04-16 02:20:56 UTC (rev 48047) @@ -1559,6 +1559,7 @@ efreet_desktop_changes_monitor_add(path); files = opendir(path); + if (!files) return; while ((file = readdir(files))) { if (!file) break; |
From: Enlightenment S. <no-...@en...> - 2010-05-16 17:11:44
|
Log: gaaaaah! fix buf - paths were "wrong" - thus matching failed. man i see some expensive ops going on with lots of strcmping. Author: raster Date: 2010-05-16 10:11:38 -0700 (Sun, 16 May 2010) New Revision: 48917 Modified: trunk/efreet/src/lib/efreet_base.c trunk/efreet/src/lib/efreet_utils.c Modified: trunk/efreet/src/lib/efreet_base.c =================================================================== --- trunk/efreet/src/lib/efreet_base.c 2010-05-16 16:10:36 UTC (rev 48916) +++ trunk/efreet/src/lib/efreet_base.c 2010-05-16 17:11:38 UTC (rev 48917) @@ -8,6 +8,9 @@ #include <string.h> #include <limits.h> +#include <Ecore.h> +#include <Ecore_File.h> + #include "Efreet.h" #include "efreet_private.h" @@ -243,7 +246,16 @@ { *p = '\0'; if (!eina_list_search_unsorted(dirs, EINA_COMPARE_CB(strcmp), s)) - dirs = eina_list_append(dirs, (void *)eina_stringshare_add(s)); + { + // resolve path properly/fully to remove path//path2 to + // path/path2, path/./path2 to path/path2 etc. + char *ts = ecore_file_realpath(s); + if (ts) + { + dirs = eina_list_append(dirs, (void *)eina_stringshare_add(ts)); + free(ts); + } + } s = ++p; p = strchr(s, EFREET_PATH_SEP); Modified: trunk/efreet/src/lib/efreet_utils.c =================================================================== --- trunk/efreet/src/lib/efreet_utils.c 2010-05-16 16:10:36 UTC (rev 48916) +++ trunk/efreet/src/lib/efreet_utils.c 2010-05-16 17:11:38 UTC (rev 48917) @@ -108,7 +108,7 @@ char *dir; dirs = efreet_default_dirs_get(efreet_data_home_get(), efreet_data_dirs_get(), - section); + section); EINA_LIST_FREE(dirs, dir) { @@ -130,7 +130,7 @@ const char *file_id; /* TODO: Check if searching in cache is fast enough */ - if (!path) return NULL; + if (!path) return NULL; file_id = eina_hash_find(file_id_by_desktop_path, path); if (file_id) return file_id; |
From: Enlightenment S. <no-...@en...> - 2010-08-03 21:32:52
|
Log: ummmm revert. crash crash crash. Author: raster Date: 2010-08-03 14:32:45 -0700 (Tue, 03 Aug 2010) New Revision: 50789 Modified: trunk/efreet/src/lib/efreet_icon.c Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2010-08-03 20:46:56 UTC (rev 50788) +++ trunk/efreet/src/lib/efreet_icon.c 2010-08-03 21:32:45 UTC (rev 50789) @@ -94,6 +94,8 @@ static char *efreet_icon_cache_check(Efreet_Icon_Theme *theme, const char *icon, unsigned int size); static void efreet_icon_cache_add(Efreet_Icon_Theme *theme, const char *icon, unsigned int size, const char *value); +static Efreet_Icon_Theme *fake_null = NULL; + static void _efreet_icon_cache_list_destroy(Eina_List *list) { @@ -151,6 +153,12 @@ IF_FREE_HASH(efreet_icon_cache); + if (fake_null) + { + efreet_icon_theme_free(fake_null); + fake_null = NULL; + } + ecore_shutdown(); } @@ -283,7 +291,7 @@ { Efreet_Icon_Theme *theme; - if (!theme_name) return NULL; + if (!theme_name) return fake_null; theme = eina_hash_find(efreet_icon_themes, theme_name); if (!theme) @@ -342,15 +350,23 @@ efreet_icon_find_theme_check(const char *theme_name) { Efreet_Icon_Theme *theme = NULL; - if (!theme_name) return NULL; - theme = efreet_icon_theme_find(theme_name); + if (theme_name) theme = efreet_icon_theme_find(theme_name); if (!theme) { + if ((fake_null) && (!theme_name)) return fake_null; theme = efreet_icon_theme_new(); if (!theme) return NULL; theme->fake = 1; - theme->name.internal = eina_stringshare_add(theme_name); - eina_hash_add(efreet_icon_themes, (void *)theme->name.internal, theme); + if (theme_name) + { + theme->name.internal = eina_stringshare_add(theme_name); + eina_hash_add(efreet_icon_themes, (void *)theme->name.internal, theme); + } + else + { + theme->name.internal = NULL; + fake_null = theme; + } } return theme; @@ -371,21 +387,18 @@ theme = efreet_icon_find_theme_check(theme_name); - if (theme) +#ifdef SLOPPY_SPEC { -#ifdef SLOPPY_SPEC - { - char *tmp; + char *tmp; - tmp = efreet_icon_remove_extension(icon); - if (!tmp) return NULL; - value = efreet_icon_find_helper(theme, tmp, size); - FREE(tmp); - } + tmp = efreet_icon_remove_extension(icon); + if (!tmp) return NULL; + value = efreet_icon_find_helper(theme, tmp, size); + FREE(tmp); + } #else - value = efreet_icon_find_helper(theme, icon, size); + value = efreet_icon_find_helper(theme, icon, size); #endif - } /* we didn't find the icon in the theme or in the inherited directories * then just look for a non theme icon @@ -419,27 +432,24 @@ theme = efreet_icon_find_theme_check(theme_name); - if (theme) +#ifdef SLOPPY_SPEC { -#ifdef SLOPPY_SPEC + Eina_List *tmps = NULL; + + EINA_LIST_FOREACH(icons, l, icon) { - Eina_List *tmps = NULL; + data = efreet_icon_remove_extension(icon); + if (!data) return NULL; + tmps = eina_list_append(tmps, data); + } - EINA_LIST_FOREACH(icons, l, icon) - { - data = efreet_icon_remove_extension(icon); - if (!data) return NULL; - tmps = eina_list_append(tmps, data); - } - - value = efreet_icon_list_find_helper(theme, tmps, size); - EINA_LIST_FREE(tmps, data) - free(data); - } + value = efreet_icon_list_find_helper(theme, tmps, size); + EINA_LIST_FREE(tmps, data) + free(data); + } #else - value = efreet_icon_list_find_helper(theme, icons, size); + value = efreet_icon_list_find_helper(theme, icons, size); #endif - } /* we didn't find the icons in the theme or in the inherited directories * then just look for a non theme icon @@ -812,7 +822,7 @@ char *icon; if (!icon_name) return NULL; - icon = efreet_icon_cache_check(NULL, icon_name, 0); + icon = efreet_icon_cache_check(efreet_icon_find_theme_check(NULL), icon_name, 0); if (icon) return icon; icon = efreet_icon_fallback_dir_scan(efreet_icon_deprecated_user_dir_get(), icon_name); @@ -829,7 +839,7 @@ icon = efreet_icon_fallback_dir_scan(dir, icon_name); if (icon) { - efreet_icon_cache_add(NULL, icon_name, 0, icon); + efreet_icon_cache_add(efreet_icon_find_theme_check(NULL), icon_name, 0, icon); return icon; } } @@ -842,7 +852,7 @@ icon = efreet_icon_fallback_dir_scan(path, icon_name); if (icon) { - efreet_icon_cache_add(NULL, icon_name, 0, icon); + efreet_icon_cache_add(efreet_icon_find_theme_check(NULL), icon_name, 0, icon); return icon; } } @@ -853,7 +863,7 @@ icon = efreet_icon_fallback_dir_scan(path, icon_name); if (icon) { - efreet_icon_cache_add(NULL, icon_name, 0, icon); + efreet_icon_cache_add(efreet_icon_find_theme_check(NULL), icon_name, 0, icon); return icon; } } @@ -861,7 +871,7 @@ icon = efreet_icon_fallback_dir_scan("/usr/share/pixmaps", icon_name); } - efreet_icon_cache_add(NULL, icon_name, 0, icon); + efreet_icon_cache_add(efreet_icon_find_theme_check(NULL), icon_name, 0, icon); return icon; } @@ -1607,8 +1617,6 @@ char key[4096]; struct stat st; - if (!theme) theme = NON_EXISTING; - list = eina_hash_find(efreet_icon_cache, theme); if (!list) return NULL; @@ -1656,7 +1664,6 @@ else cache->lasttime = ecore_time_get(); - if (!theme) theme = NON_EXISTING; list = eina_hash_find(efreet_icon_cache, theme); list = eina_list_prepend(list, cache); |
From: Enlightenment S. <no-...@en...> - 2010-08-14 04:02:37
|
Log: sloppy ecore_job handle! fix! Author: raster Date: 2010-08-13 21:02:31 -0700 (Fri, 13 Aug 2010) New Revision: 51107 Modified: trunk/efreet/src/lib/efreet_desktop.c Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2010-08-14 03:05:35 UTC (rev 51106) +++ trunk/efreet/src/lib/efreet_desktop.c 2010-08-14 04:02:31 UTC (rev 51107) @@ -243,8 +243,11 @@ eina_log_domain_unregister(_efreet_desktop_log_dom); IF_RELEASE(cache_file); IF_RELEASE(cache_dirs); - if (efreet_desktop_job) ecore_job_del(efreet_desktop_job); - efreet_desktop_job = NULL; + if (efreet_desktop_job) + { + ecore_job_del(efreet_desktop_job); + efreet_desktop_job = NULL; + } } /** @@ -1395,7 +1398,6 @@ if (map != MAP_FAILED) munmap(map, st.st_size); if (fd > 0) close(fd); if (cachefd > 0) close(cachefd); - efreet_desktop_job = NULL; return 0; } @@ -1499,6 +1501,8 @@ char file[PATH_MAX]; struct flock fl; + efreet_desktop_job = NULL; + /* TODO: Retry update cache later */ if (efreet_desktop_exe_lock > 0) return; |
From: Enlightenment S. <no-...@en...> - 2010-08-15 03:02:02
|
Log: From: Joerg Sonnenberger <jo...@br...> Subject: [E-devel] [PATCH] efreet and icon loading Hi all, attached patch fixes two issues: (1) If using a non-default prefix, share/pixmaps should be checked before the hard-coded /usr/share/pixmaps fallback. This basically restores symmetry with the other cases like share/icons. (2) Do a fallback lookup if the theme is not valid or faked. This can happen if only hicolor is installed and e17 decides to use Tango. Before, e.g. gimp's icon wasn't picked up because the short cut was too early. Author: raster Date: 2010-08-14 20:01:55 -0700 (Sat, 14 Aug 2010) New Revision: 51124 Modified: trunk/efreet/src/lib/efreet_icon.c Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2010-08-15 02:59:32 UTC (rev 51123) +++ trunk/efreet/src/lib/efreet_icon.c 2010-08-15 03:01:55 UTC (rev 51124) @@ -531,14 +531,16 @@ efreet_icon_theme_cache_check(theme); - /* go no further if this theme is fake */ - if (theme->fake || !theme->valid) return NULL; /* limit recursion in finding themes and inherited themes to 256 levels */ if (recurse > 256) return NULL; recurse++; - value = efreet_icon_lookup_icon(theme, icon, size); + /* go no further if this theme is fake */ + if (theme->fake || !theme->valid) + value = NULL; + else + value = efreet_icon_lookup_icon(theme, icon, size); /* we didin't find the image check the inherited themes */ if (!value || (value == NON_EXISTING)) @@ -843,6 +845,17 @@ } } + EINA_LIST_FOREACH(xdg_dirs, l, dir) + { + snprintf(path, PATH_MAX, "%s/pixmaps", dir); + icon = efreet_icon_fallback_dir_scan(path, icon_name); + if (icon) + { + efreet_icon_cache_add(efreet_icon_find_theme_check(NULL), icon_name, 0, icon); + return icon; + } + } + icon = efreet_icon_fallback_dir_scan("/usr/share/pixmaps", icon_name); } @@ -1263,6 +1276,12 @@ efreet_icon_theme_dir_scan(path, theme_name); } + EINA_LIST_FOREACH(xdg_dirs, l, dir) + { + snprintf(path, sizeof(path), "%s/pixmaps", dir); + efreet_icon_theme_dir_scan(path, theme_name); + } + efreet_icon_theme_dir_scan("/usr/share/pixmaps", theme_name); } |
From: Enlightenment S. <no-...@en...> - 2010-11-22 09:47:42
|
Log: lets... use our return value shall we? <- THATS the missing icons bug i was telling you about! Author: raster Date: 2010-11-22 01:47:36 -0800 (Mon, 22 Nov 2010) New Revision: 54776 Modified: trunk/efreet/src/lib/efreet_icon.c Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2010-11-22 09:41:37 UTC (rev 54775) +++ trunk/efreet/src/lib/efreet_icon.c 2010-11-22 09:47:36 UTC (rev 54776) @@ -877,7 +877,7 @@ EINA_LIST_FOREACH(xdg_dirs, l, dir) { snprintf(path, sizeof(path), "%s/icons", dir); - efreet_icon_fallback_dir_scan(path, icon_name); + icon = efreet_icon_fallback_dir_scan(path, icon_name); if (icon) { efreet_icon_cache_add(NULL, icon_name, 0, icon); |
From: Enlightenment S. <no-...@en...> - 2011-04-08 11:01:18
|
Log: doxy -> h files. Author: raster Date: 2011-04-08 04:01:08 -0700 (Fri, 08 Apr 2011) New Revision: 58487 Trac: http://trac.enlightenment.org/e/changeset/58487 Modified: trunk/efreet/src/lib/Efreet.h trunk/efreet/src/lib/Efreet_Mime.h trunk/efreet/src/lib/Efreet_Trash.h trunk/efreet/src/lib/efreet.c trunk/efreet/src/lib/efreet_base.c trunk/efreet/src/lib/efreet_base.h trunk/efreet/src/lib/efreet_desktop.c trunk/efreet/src/lib/efreet_desktop.h trunk/efreet/src/lib/efreet_desktop_command.c trunk/efreet/src/lib/efreet_icon.c trunk/efreet/src/lib/efreet_icon.h trunk/efreet/src/lib/efreet_ini.c trunk/efreet/src/lib/efreet_ini.h trunk/efreet/src/lib/efreet_menu.c trunk/efreet/src/lib/efreet_menu.h trunk/efreet/src/lib/efreet_mime.c trunk/efreet/src/lib/efreet_trash.c trunk/efreet/src/lib/efreet_uri.c trunk/efreet/src/lib/efreet_uri.h trunk/efreet/src/lib/efreet_utils.c trunk/efreet/src/lib/efreet_utils.h Modified: trunk/efreet/src/lib/Efreet.h =================================================================== --- trunk/efreet/src/lib/Efreet.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/Efreet.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -79,7 +79,18 @@ #include "efreet_utils.h" #include "efreet_uri.h" +/** + * @return Returns > 0 if the initialization was successful, 0 otherwise + * @brief Initializes the Efreet system + */ EAPI int efreet_init(void); + +/** + * @return Returns the number of times the init function as been called + * minus the corresponding init call. + * @brief Shuts down Efreet if a balanced number of init/shutdown calls have + * been made + */ EAPI int efreet_shutdown(void); #ifdef __cplusplus Modified: trunk/efreet/src/lib/Efreet_Mime.h =================================================================== --- trunk/efreet/src/lib/Efreet_Mime.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/Efreet_Mime.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -43,19 +43,75 @@ #endif +/** + * @return Returns 1 on success or 0 on failure + * @brief Initializes the efreet mime settings + */ EAPI int efreet_mime_init(void); + +/** + * @return Returns no value + * @brief Cleans up the efreet mime settings system + */ EAPI int efreet_mime_shutdown(void); +/** + * @param file The file to find the mime type + * @return Returns mime type as a string + * @brief Retreive the mime type of a file + */ EAPI const char *efreet_mime_type_get(const char *file); + +/** + * @param file The file to check the mime type + * @return Returns mime type as a string + * @brief Retreive the mime type of a file using magic + */ EAPI const char *efreet_mime_magic_type_get(const char *file); + +/** + * @param file The file to check the mime type + * @return Returns mime type as a string + * @brief Retreive the mime type of a file using globs + */ EAPI const char *efreet_mime_globs_type_get(const char *file); + +/** + * @param file The file to check the mime type + * @return Returns mime type as a string + * @brief Retreive the special mime type of a file + */ EAPI const char *efreet_mime_special_type_get(const char *file); + +/** + * @param file The file to check the mime type + * @return Returns mime type as a string + * @brief Retreive the fallback mime type of a file + */ EAPI const char *efreet_mime_fallback_type_get(const char *file); + +/** + * @param mime The name of the mime type + * @param theme The name of the theme to search icons in + * @param size The wanted size of the icon + * @return Returns mime type icon path as a string + * @brief Retreive the mime type icon for a file + */ EAPI const char *efreet_mime_type_icon_get(const char *mime, const char *theme, - unsigned int size); + unsigned int size); +/** + * @brief Clear mime icons mapping cache + */ EAPI void efreet_mime_type_cache_clear(void); + +/** + * @brief Flush mime icons mapping cache + * + * Flush timeout is defined at compile time by + * EFREET_MIME_ICONS_FLUSH_TIMEOUT + */ EAPI void efreet_mime_type_cache_flush(void); /** Modified: trunk/efreet/src/lib/Efreet_Trash.h =================================================================== --- trunk/efreet/src/lib/Efreet_Trash.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/Efreet_Trash.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -40,13 +40,55 @@ * @{ */ +/** + * @return Returns 1 on success or 0 on failure + * @brief Initializes the efreet trash system + */ EAPI int efreet_trash_init(void); + +/** + * @return Returns no value + * @brief Cleans up the efreet trash system + */ EAPI int efreet_trash_shutdown(void); +/** + * @return Returns the XDG Trash local directory or NULL on errors + * return value must be freed with eina_stringshare_del. + * @brief Retrieves the XDG Trash local directory + */ EAPI const char *efreet_trash_dir_get(const char *for_file); + +/** + * @param uri The local uri to move in the trash + * @param force_delete If you set this to 1 than files on different filesystems + * will be deleted permanently + * @return Return 1 on success, 0 on failure or -1 in case the uri is not on the + * same filesystem and force_delete is not set. + * @brief This function try to move the given uri to the trash. Files on + * different filesystem can't be moved to trash. If force_delete + * is 0 than non-local files will be ignored and -1 is returned, if you set + * force_delete to 1 non-local files will be deleted without asking. + */ EAPI int efreet_trash_delete_uri(Efreet_Uri *uri, int force_delete); + +/** + * @return Return a list of strings with filename (remember to free the list + * when you don't need anymore) + * @brief List all the files and directory currently inside the trash. + */ EAPI Eina_List *efreet_trash_ls(void); + +/** + * @return Return 1 if the trash is empty or 0 if some file are in. + * @brief Check if the trash is currently empty + */ EAPI int efreet_trash_is_empty(void); + +/** + * @return Return 1 on success or 0 on failure + * @brief Delete all the files inside the trash. + */ EAPI int efreet_trash_empty_trash(void); /** Modified: trunk/efreet/src/lib/efreet.c =================================================================== --- trunk/efreet/src/lib/efreet.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -55,10 +55,6 @@ static uid_t ruid; static uid_t rgid; -/** - * @return Returns > 0 if the initialization was successful, 0 otherwise - * @brief Initializes the Efreet system - */ EAPI int efreet_init(void) { @@ -141,12 +137,6 @@ return --_efreet_init_count; } -/** - * @return Returns the number of times the init function as been called - * minus the corresponding init call. - * @brief Shuts down Efreet if a balanced number of init/shutdown calls have - * been made - */ EAPI int efreet_shutdown(void) { Modified: trunk/efreet/src/lib/efreet_base.c =================================================================== --- trunk/efreet/src/lib/efreet_base.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_base.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -116,10 +116,6 @@ return efreet_home_dir; } -/** - * @return Returns the XDG Data Home directory - * @brief Retrieves the XDG Data Home directory - */ EAPI const char * efreet_data_home_get(void) { @@ -128,15 +124,6 @@ return xdg_data_home; } -/** - * @return Returns the Eina_List of preference ordered extra data directories - * @brief Returns the Eina_List of prefernece oredred extra data - * directories - * - * @note The returned list is static inside Efreet. If you add/remove from the - * list then the next call to efreet_data_dirs_get() will return your - * modified values. DO NOT free this list. - */ EAPI Eina_List * efreet_data_dirs_get(void) { @@ -156,10 +143,6 @@ return xdg_data_dirs; } -/** - * @return Returns the XDG Config Home directory - * @brief Retrieves the XDG Config Home directory - */ EAPI const char * efreet_config_home_get(void) { @@ -168,15 +151,6 @@ return xdg_config_home; } -/** - * @return Returns the Eina_List of preference ordered extra config directories - * @brief Returns the Eina_List of prefernece ordered extra config - * directories - * - * @note The returned list is static inside Efreet. If you add/remove from the - * list then the next call to efreet_config_dirs_get() will return your - * modified values. DO NOT free this list. - */ EAPI Eina_List * efreet_config_dirs_get(void) { @@ -185,10 +159,6 @@ return xdg_config_dirs; } -/** - * @return Returns the XDG Cache Home directory - * @brief Retrieves the XDG Cache Home directory - */ EAPI const char * efreet_cache_home_get(void) { @@ -197,10 +167,6 @@ return xdg_cache_home; } -/** - * @return Returns the current hostname - * @brief Returns the current hostname or empty string if not found - */ EAPI const char * efreet_hostname_get(void) { Modified: trunk/efreet/src/lib/efreet_base.h =================================================================== --- trunk/efreet/src/lib/efreet_base.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_base.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -10,13 +10,53 @@ * @{ */ + +/** + * @return Returns the XDG Data Home directory + * @brief Retrieves the XDG Data Home directory + */ EAPI const char *efreet_data_home_get(void); + +/** + * @return Returns the Eina_List of preference ordered extra data directories + * @brief Returns the Eina_List of prefernece oredred extra data + * directories + * + * @note The returned list is static inside Efreet. If you add/remove from the + * list then the next call to efreet_data_dirs_get() will return your + * modified values. DO NOT free this list. + */ EAPI Eina_List *efreet_data_dirs_get(void); + +/** + * @return Returns the XDG Config Home directory + * @brief Retrieves the XDG Config Home directory + */ EAPI const char *efreet_config_home_get(void); + +/** + * @return Returns the Eina_List of preference ordered extra config directories + * @brief Returns the Eina_List of prefernece ordered extra config + * directories + * + * @note The returned list is static inside Efreet. If you add/remove from the + * list then the next call to efreet_config_dirs_get() will return your + * modified values. DO NOT free this list. + */ EAPI Eina_List *efreet_config_dirs_get(void); + +/** + * @return Returns the XDG Cache Home directory + * @brief Retrieves the XDG Cache Home directory + */ EAPI const char *efreet_cache_home_get(void); + +/** + * @return Returns the current hostname + * @brief Returns the current hostname or empty string if not found + */ EAPI const char *efreet_hostname_get(void); /** Modified: trunk/efreet/src/lib/efreet_desktop.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_desktop.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -163,16 +163,6 @@ _efreet_desktop_log_dom = -1; } -/** - * @param file The file to get the Efreet_Desktop from - * @return Returns a reference to a cached Efreet_Desktop on success, NULL - * on failure - * @brief Gets a reference to an Efreet_Desktop structure representing the - * contents of @a file or NULL if @a file is not a valid .desktop file. - * - * By using efreet_desktop_get the Efreet_Desktop will be saved in an internal - * cache for quicker loading. - */ EAPI Efreet_Desktop * efreet_desktop_get(const char *file) { @@ -188,11 +178,6 @@ return desktop; } -/** - * @param desktop The Efreet_Desktop to ref - * @return Returns the new reference count - * @brief Increases reference count on desktop - */ EAPI int efreet_desktop_ref(Efreet_Desktop *desktop) { @@ -201,11 +186,6 @@ return desktop->ref; } -/** - * @param file The file to create the Efreet_Desktop from - * @return Returns a new empty_Efreet_Desktop on success, NULL on failure - * @brief Creates a new empty Efreet_Desktop structure or NULL on failure - */ EAPI Efreet_Desktop * efreet_desktop_empty_new(const char *file) { @@ -222,13 +202,6 @@ return desktop; } -/** - * @param file The file to get the Efreet_Desktop from - * @return Returns a reference to a cached Efreet_Desktop on success, NULL - * on failure - * @brief Gets a reference to an Efreet_Desktop structure representing the - * contents of @a file or NULL if @a file is not a valid .desktop file. - */ EAPI Efreet_Desktop * efreet_desktop_new(const char *file) { @@ -253,18 +226,6 @@ return efreet_desktop_uncached_new(file); } -/** - * @param file The file to create the Efreet_Desktop from - * @return Returns a new Efreet_Desktop on success, NULL on failure - * @brief Creates a new Efreet_Desktop structure initialized from the - * contents of @a file or NULL on failure - * - * By using efreet_desktop_uncached_new the Efreet_Desktop structure will be - * read from disk, and not from any cache. - * - * Data in the structure is allocated with strdup, so use free and strdup to - * change values. - */ EAPI Efreet_Desktop * efreet_desktop_uncached_new(const char *file) { @@ -288,12 +249,6 @@ return desktop; } -/** - * @param desktop The desktop file to save - * @return Returns 1 on success or 0 on failure - * @brief Saves any changes made to @a desktop back to the file on the - * filesystem - */ EAPI int efreet_desktop_save(Efreet_Desktop *desktop) { @@ -348,15 +303,6 @@ return ok; } -/** - * @param desktop The desktop file to save - * @param file The filename to save as - * @return Returns 1 on success or 0 on failure - * @brief Saves @a desktop to @a file - * - * Please use efreet_desktop_uncached_new() on an existing file - * before using efreet_desktop_save_as() - */ EAPI int efreet_desktop_save_as(Efreet_Desktop *desktop, const char *file) { @@ -368,11 +314,6 @@ return efreet_desktop_save(desktop); } -/** - * @param desktop The Efreet_Desktop to work with - * @return Returns no value - * @brief Frees the Efreet_Desktop structure and all of it's data - */ EAPI void efreet_desktop_free(Efreet_Desktop *desktop) { @@ -420,10 +361,6 @@ } } -/** - * @param environment the environment name - * @brief sets the global desktop environment name - */ EAPI void efreet_desktop_environment_set(const char *environment) { @@ -432,22 +369,12 @@ else desktop_environment = NULL; } -/** - * @return environment the environment name - * @brief sets the global desktop environment name - */ EAPI const char * efreet_desktop_environment_get(void) { return desktop_environment; } -/** - * @param desktop The desktop to work with - * @return Returns the number of categories assigned to this desktop - * @brief Retrieves the number of categories the given @a desktop belongs - * too - */ EAPI unsigned int efreet_desktop_category_count_get(Efreet_Desktop *desktop) { @@ -455,11 +382,6 @@ return eina_list_count(desktop->categories); } -/** - * @param desktop the desktop - * @param category the category name - * @brief add a category to a desktop - */ EAPI void efreet_desktop_category_add(Efreet_Desktop *desktop, const char *category) { @@ -472,12 +394,6 @@ (void *)eina_stringshare_add(category)); } -/** - * @param desktop the desktop - * @param category the category name - * @brief removes a category from a desktop - * @return 1 if the desktop had his category listed, 0 otherwise - */ EAPI int efreet_desktop_category_del(Efreet_Desktop *desktop, const char *category) { @@ -497,14 +413,6 @@ return 0; } -/** - * @param type The type to add to the list of matching types - * @param parse_func a function to parse out custom fields - * @param save_func a function to save data returned from @a parse_func - * @param free_func a function to free data returned from @a parse_func - * @return Returns the id of the new type - * @brief Adds the given type to the list of types in the system - */ EAPI int efreet_desktop_type_add(const char *type, Efreet_Desktop_Type_Parse_Cb parse_func, Efreet_Desktop_Type_Save_Cb save_func, @@ -529,14 +437,6 @@ return id; } -/** - * @brief Add an alias for an existing desktop type. - * @param from_type the type to alias (e.g. EFREE_DESKTOP_TYPE_APPLICATION) - * @param alias the alias - * @return the new type id, or -1 if @p from_type was not valid - * - * This allows applications to add non-standard types that behave exactly as standard types. - */ EAPI int efreet_desktop_type_alias(int from_type, const char *alias) { @@ -547,15 +447,6 @@ return efreet_desktop_type_add(alias, info->parse_func, info->save_func, info->free_func); } -/** - * @brief Set the value for a X- field (Non spec) in the structure - * @param desktop the desktop - * @param key the key name to set - * @param data the value to set - * @return EINA_TRUE on success - * - * The key has to start with "X-" - */ EAPI Eina_Bool efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char *data) { @@ -571,12 +462,6 @@ return EINA_TRUE; } -/** - * @brief Get the value for a X- field (Non spec) in the structure - * @param desktop the desktop - * @param key the key - * @return The value referenced by the key, or NULL if the key does not exist - */ EAPI const char * efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key) { @@ -595,12 +480,6 @@ return eina_stringshare_add(ret); } -/** - * @brief Delete the key and value for a X- field (Non spec) in the structure - * @param desktop the desktop - * @param key the key - * @return EINA_TRUE if the key existed - */ EAPI Eina_Bool efreet_desktop_x_field_del(Efreet_Desktop *desktop, const char *key) { @@ -613,22 +492,12 @@ return eina_hash_del_by_key(desktop->x, key); } -/** - * @brief get type specific data for custom desktop types - * @param desktop the desktop - * @return type specific data, or NULL if there is none - */ EAPI void * efreet_desktop_type_data_get(Efreet_Desktop *desktop) { return desktop->type_data; } -/** - * @param string the raw string list - * @return an Eina_List of ecore string's - * @brief Parse ';' separate list of strings according to the desktop spec - */ EAPI Eina_List * efreet_desktop_string_list_parse(const char *string) { @@ -664,11 +533,6 @@ return list; } -/** - * @param list Eina_List with strings - * @return a raw string list - * @brief Create a ';' separate list of strings according to the desktop spec - */ EAPI char * efreet_desktop_string_list_join(Eina_List *list) { Modified: trunk/efreet/src/lib/efreet_desktop.h =================================================================== --- trunk/efreet/src/lib/efreet_desktop.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_desktop.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -11,6 +11,16 @@ * @{ */ + +/** + * @param desktop the desktop entry + * @param files an eina list of file names to execute, as either absolute paths, + * relative paths, or uris + * @param func a callback to call for each prepared command line + * @param data user data passed to the callback + * @return Returns the return value of @p func on success or NULL on failure + * @brief Get a command to use to execute a desktop entry. + */ EAPI extern int EFREET_DESKTOP_TYPE_APPLICATION; EAPI extern int EFREET_DESKTOP_TYPE_LINK; EAPI extern int EFREET_DESKTOP_TYPE_DIRECTORY; @@ -97,27 +107,125 @@ void *type_data; /**< Type specific data for custom types */ }; + +/** + * @param file The file to get the Efreet_Desktop from + * @return Returns a reference to a cached Efreet_Desktop on success, NULL + * on failure + * @brief Gets a reference to an Efreet_Desktop structure representing the + * contents of @a file or NULL if @a file is not a valid .desktop file. + * + * By using efreet_desktop_get the Efreet_Desktop will be saved in an internal + * cache for quicker loading. + */ EAPI Efreet_Desktop *efreet_desktop_get(const char *file); + +/** + * @param desktop The Efreet_Desktop to ref + * @return Returns the new reference count + * @brief Increases reference count on desktop + */ EAPI int efreet_desktop_ref(Efreet_Desktop *desktop); + +/** + * @param file The file to create the Efreet_Desktop from + * @return Returns a new empty_Efreet_Desktop on success, NULL on failure + * @brief Creates a new empty Efreet_Desktop structure or NULL on failure + */ EAPI Efreet_Desktop *efreet_desktop_empty_new(const char *file); + +/** + * @param file The file to get the Efreet_Desktop from + * @return Returns a reference to a cached Efreet_Desktop on success, NULL + * on failure + * @brief Gets a reference to an Efreet_Desktop structure representing the + * contents of @a file or NULL if @a file is not a valid .desktop file. + */ EAPI Efreet_Desktop *efreet_desktop_new(const char *file); + +/** + * @param file The file to create the Efreet_Desktop from + * @return Returns a new Efreet_Desktop on success, NULL on failure + * @brief Creates a new Efreet_Desktop structure initialized from the + * contents of @a file or NULL on failure + * + * By using efreet_desktop_uncached_new the Efreet_Desktop structure will be + * read from disk, and not from any cache. + * + * Data in the structure is allocated with strdup, so use free and strdup to + * change values. + */ EAPI Efreet_Desktop *efreet_desktop_uncached_new(const char *file); + +/** + * @param desktop The Efreet_Desktop to work with + * @return Returns no value + * @brief Frees the Efreet_Desktop structure and all of it's data + */ EAPI void efreet_desktop_free(Efreet_Desktop *desktop); + /** * @def efreet_desktop_unref(desktop) * Alias for efreet_desktop_free(desktop) */ #define efreet_desktop_unref(desktop) efreet_desktop_free((desktop)) + +/** + * @param desktop The desktop file to save + * @return Returns 1 on success or 0 on failure + * @brief Saves any changes made to @a desktop back to the file on the + * filesystem + */ EAPI int efreet_desktop_save(Efreet_Desktop *desktop); + +/** + * @param desktop The desktop file to save + * @param file The filename to save as + * @return Returns 1 on success or 0 on failure + * @brief Saves @a desktop to @a file + * + * Please use efreet_desktop_uncached_new() on an existing file + * before using efreet_desktop_save_as() + */ EAPI int efreet_desktop_save_as(Efreet_Desktop *desktop, const char *file); + +/** + * @param desktop The desktop file to work with + * @param files The files to be substituted into the exec line + * @param data The data pointer to pass + * @return Returns the Ecore_Exce for @a desktop + * @brief Parses the @a desktop exec line and returns an Ecore_Exe. + */ EAPI void efreet_desktop_exec(Efreet_Desktop *desktop, Eina_List *files, void *data); + +/** + * @param environment the environment name + * @brief sets the global desktop environment name + */ EAPI void efreet_desktop_environment_set(const char *environment); + +/** + * @return environment the environment name + * @brief sets the global desktop environment name + */ EAPI const char *efreet_desktop_environment_get(void); + +/** + * @param desktop the desktop entry + * @param files an eina list of file names to execute, as either absolute paths, + * relative paths, or uris + * @param cb_command a callback to call for each prepared command line + * @param cb_progress a callback to get progress for the downloads + * @param data user data passed to the callback + * @return Returns 1 on success or 0 on failure + * @brief Get a command to use to execute a desktop entry, and receive progress + * updates for downloading of remote URI's passed in. + */ EAPI void *efreet_desktop_command_progress_get(Efreet_Desktop *desktop, Eina_List *files, Efreet_Desktop_Command_Cb cb_command, @@ -127,28 +235,117 @@ Eina_List *files, Efreet_Desktop_Command_Cb func, void *data); + +/** + * @param desktop the desktop entry + * @param files an eina list of local files, as absolute paths, local paths, or file// uris (or NULL to get exec string with no files appended) + * @return Returns an eina list of exec strings + * @brief Get the command to use to execute a desktop entry + * + * The returned list and each of its elements must be freed. + */ EAPI Eina_List * efreet_desktop_command_local_get(Efreet_Desktop *desktop, Eina_List *files); + +/** + * @param desktop The desktop to work with + * @return Returns the number of categories assigned to this desktop + * @brief Retrieves the number of categories the given @a desktop belongs + * too + */ EAPI unsigned int efreet_desktop_category_count_get(Efreet_Desktop *desktop); + +/** + * @param desktop the desktop + * @param category the category name + * @brief add a category to a desktop + */ EAPI void efreet_desktop_category_add(Efreet_Desktop *desktop, const char *category); + +/** + * @param desktop the desktop + * @param category the category name + * @brief removes a category from a desktop + * @return 1 if the desktop had his category listed, 0 otherwise + */ EAPI int efreet_desktop_category_del(Efreet_Desktop *desktop, const char *category); + +/** + * @param type The type to add to the list of matching types + * @param parse_func a function to parse out custom fields + * @param save_func a function to save data returned from @a parse_func + * @param free_func a function to free data returned from @a parse_func + * @return Returns the id of the new type + * @brief Adds the given type to the list of types in the system + */ EAPI int efreet_desktop_type_add(const char *type, Efreet_Desktop_Type_Parse_Cb parse_func, Efreet_Desktop_Type_Save_Cb save_func, Efreet_Desktop_Type_Free_Cb free_func); + +/** + * @brief Add an alias for an existing desktop type. + * @param from_type the type to alias (e.g. EFREE_DESKTOP_TYPE_APPLICATION) + * @param alias the alias + * @return the new type id, or -1 if @p from_type was not valid + * + * This allows applications to add non-standard types that behave exactly as standard types. + */ EAPI int efreet_desktop_type_alias (int from_type, const char *alias); + +/** + * @brief get type specific data for custom desktop types + * @param desktop the desktop + * @return type specific data, or NULL if there is none + */ EAPI void *efreet_desktop_type_data_get(Efreet_Desktop *desktop); + +/** + * @param string the raw string list + * @return an Eina_List of ecore string's + * @brief Parse ';' separate list of strings according to the desktop spec + */ EAPI Eina_List *efreet_desktop_string_list_parse(const char *string); + +/** + * @param list Eina_List with strings + * @return a raw string list + * @brief Create a ';' separate list of strings according to the desktop spec + */ EAPI char *efreet_desktop_string_list_join(Eina_List *list); + +/** + * @brief Set the value for a X- field (Non spec) in the structure + * @param desktop the desktop + * @param key the key name to set + * @param data the value to set + * @return EINA_TRUE on success + * + * The key has to start with "X-" + */ EAPI Eina_Bool efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char *data); + +/** + * @brief Get the value for a X- field (Non spec) in the structure + * @param desktop the desktop + * @param key the key + * @return The value referenced by the key, or NULL if the key does not exist + */ EAPI const char * efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key); + +/** + * @brief Delete the key and value for a X- field (Non spec) in the structure + * @param desktop the desktop + * @param key the key + * @return EINA_TRUE if the key existed + */ EAPI Eina_Bool efreet_desktop_x_field_del(Efreet_Desktop *desktop, const char *key); /** Modified: trunk/efreet/src/lib/efreet_desktop_command.c =================================================================== --- trunk/efreet/src/lib/efreet_desktop_command.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_desktop_command.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -94,9 +94,6 @@ int pending; }; -/** - * A unique id for each tmp file created while building a command - */ static int efreet_desktop_command_file_id = 0; static void *efreet_desktop_exec_cb(void *data, Efreet_Desktop *desktop, @@ -137,28 +134,12 @@ int *len, char c); -/** - * @param desktop The desktop file to work with - * @param files The files to be substituted into the exec line - * @param data The data pointer to pass - * @return Returns the Ecore_Exce for @a desktop - * @brief Parses the @a desktop exec line and returns an Ecore_Exe. - */ EAPI void efreet_desktop_exec(Efreet_Desktop *desktop, Eina_List *files, void *data) { efreet_desktop_command_get(desktop, files, efreet_desktop_exec_cb, data); } -/** - * @param desktop the desktop entry - * @param files an eina list of file names to execute, as either absolute paths, - * relative paths, or uris - * @param func a callback to call for each prepared command line - * @param data user data passed to the callback - * @return Returns the return value of @p func on success or NULL on failure - * @brief Get a command to use to execute a desktop entry. - */ EAPI void * efreet_desktop_command_get(Efreet_Desktop *desktop, Eina_List *files, Efreet_Desktop_Command_Cb func, void *data) @@ -166,14 +147,6 @@ return efreet_desktop_command_progress_get(desktop, files, func, NULL, data); } -/** - * @param desktop the desktop entry - * @param files an eina list of local files, as absolute paths, local paths, or file// uris (or NULL to get exec string with no files appended) - * @return Returns an eina list of exec strings - * @brief Get the command to use to execute a desktop entry - * - * The returned list and each of its elements must be freed. - */ EAPI Eina_List * efreet_desktop_command_local_get(Efreet_Desktop *desktop, Eina_List *files) { @@ -213,17 +186,6 @@ return execs; } -/** - * @param desktop the desktop entry - * @param files an eina list of file names to execute, as either absolute paths, - * relative paths, or uris - * @param cb_command a callback to call for each prepared command line - * @param cb_progress a callback to get progress for the downloads - * @param data user data passed to the callback - * @return Returns 1 on success or 0 on failure - * @brief Get a command to use to execute a desktop entry, and receive progress - * updates for downloading of remote URI's passed in. - */ EAPI void * efreet_desktop_command_progress_get(Efreet_Desktop *desktop, Eina_List *files, Efreet_Desktop_Command_Cb cb_command, Modified: trunk/efreet/src/lib/efreet_icon.c =================================================================== --- trunk/efreet/src/lib/efreet_icon.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_icon.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -120,10 +120,6 @@ IF_FREE_HASH(change_monitors); } -/** - * @return Returns the deprecated user icon directory - * @brief Returns the deprecated user icon directory - */ EAPI const char * efreet_icon_deprecated_user_dir_get(void) { @@ -143,10 +139,6 @@ return efreet_icon_deprecated_user_dir; } -/** - * @return Returns the user icon directory - * @brief Returns the user icon directory - */ EAPI const char * efreet_icon_user_dir_get(void) { @@ -166,11 +158,6 @@ return efreet_icon_user_dir; } -/** - * @param ext The extension to add to the list of checked extensions - * @return Returns no value. - * @brief Adds the given extension to the list of possible icon extensions - */ EAPI void efreet_icon_extension_add(const char *ext) { @@ -187,48 +174,24 @@ efreet_icon_extensions = eina_list_prepend(efreet_icon_extensions, ext); } -/** - * @return Returns a list of strings that are paths to other icon directories - * @brief Gets the list of all extra directories to look for icons. These - * directories are used to look for icons after looking in the user icon dir - * and before looking in standard system directories. The order of search is - * from first to last directory in this list. the strings in the list should - * be created with eina_stringshare_add(). - */ EAPI Eina_List ** efreet_icon_extra_list_get(void) { return &efreet_extra_icon_dirs; } -/** - * @return Returns a list of strings that are icon extensions to look for - * @brief Gets the list of all icon extensions to look for - */ EAPI Eina_List * efreet_icon_extensions_list_get(void) { return efreet_icon_extensions; } -/** - * @return Returns a list of Efreet_Icon structs for all the non-hidden icon - * themes - * @brief Retrieves all of the non-hidden icon themes available on the system. - * The returned list must be freed. Do not free the list data. - */ EAPI Eina_List * efreet_icon_theme_list_get(void) { return efreet_cache_icon_theme_list(); } -/** - * @param theme_name The theme to look for - * @return Returns the icon theme related to the given theme name or NULL if - * none exists. - * @brief Tries to get the icon theme structure for the given theme name - */ EAPI Efreet_Icon_Theme * efreet_icon_theme_find(const char *theme_name) { @@ -273,13 +236,6 @@ return tmp; } -/** - * @param theme_name The icon theme to look for - * @param icon The icon to look for - * @param size; The icon size to look for - * @return Returns the path to the given icon or NULL if none found - * @brief Retrives the path to the given icon. - */ EAPI const char * efreet_icon_path_find(const char *theme_name, const char *icon, unsigned int size) { @@ -322,17 +278,6 @@ return value; } -/** - * @param theme_name The icon theme to look for - * @param icons List of icons to look for - * @param size; The icon size to look for - * @return Returns the path representing first found icon or - * NULL if none of the icons are found - * @brief Retrieves all of the information about the first found icon in - * the list. - * @note This function will search the given theme for all icons before falling - * back. This is useful when searching for mimetype icons. - */ EAPI const char * efreet_icon_list_find(const char *theme_name, Eina_List *icons, unsigned int size) @@ -408,14 +353,6 @@ return value; } -/** - * @param theme_name The icon theme to look for - * @param icon The icon to look for - * @param size The icon size to look for - * @return Returns the Efreet_Icon structure representing this icon or NULL - * if the icon is not found - * @brief Retrieves all of the information about the given icon. - */ EAPI Efreet_Icon * efreet_icon_find(const char *theme_name, const char *icon, unsigned int size) { @@ -477,11 +414,6 @@ return icon; } -/** - * @param icon The Efreet_Icon to cleanup - * @return Returns no value. - * @brief Free's the given icon and all its internal data. - */ EAPI void efreet_icon_free(Efreet_Icon *icon) { Modified: trunk/efreet/src/lib/efreet_icon.h =================================================================== --- trunk/efreet/src/lib/efreet_icon.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_icon.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -15,6 +15,11 @@ /** * Event id for cache update. */ + +/** + * @return Returns the user icon directory + * @brief Returns the user icon directory + */ EAPI extern int EFREET_EVENT_ICON_CACHE_UPDATE; /** @@ -140,22 +145,96 @@ }; EAPI const char *efreet_icon_user_dir_get(void); + +/** + * @return Returns the deprecated user icon directory + * @brief Returns the deprecated user icon directory + */ EAPI const char *efreet_icon_deprecated_user_dir_get(void); + +/** + * @param ext The extension to add to the list of checked extensions + * @return Returns no value. + * @brief Adds the given extension to the list of possible icon extensions + */ EAPI void efreet_icon_extension_add(const char *ext); + +/** + * @return Returns a list of strings that are paths to other icon directories + * @brief Gets the list of all extra directories to look for icons. These + * directories are used to look for icons after looking in the user icon dir + * and before looking in standard system directories. The order of search is + * from first to last directory in this list. the strings in the list should + * be created with eina_stringshare_add(). + */ EAPI Eina_List **efreet_icon_extra_list_get(void); + +/** + * @return Returns a list of strings that are icon extensions to look for + * @brief Gets the list of all icon extensions to look for + */ EAPI Eina_List *efreet_icon_extensions_list_get(void); + +/** + * @return Returns a list of Efreet_Icon structs for all the non-hidden icon + * themes + * @brief Retrieves all of the non-hidden icon themes available on the system. + * The returned list must be freed. Do not free the list data. + */ EAPI Eina_List *efreet_icon_theme_list_get(void); + +/** + * @param theme_name The theme to look for + * @return Returns the icon theme related to the given theme name or NULL if + * none exists. + * @brief Tries to get the icon theme structure for the given theme name + */ EAPI Efreet_Icon_Theme *efreet_icon_theme_find(const char *theme_name); + +/** + * @param theme_name The icon theme to look for + * @param icon The icon to look for + * @param size The icon size to look for + * @return Returns the Efreet_Icon structure representing this icon or NULL + * if the icon is not found + * @brief Retrieves all of the information about the given icon. + */ EAPI Efreet_Icon *efreet_icon_find(const char *theme_name, const char *icon, unsigned int size); + +/** + * @param theme_name The icon theme to look for + * @param icons List of icons to look for + * @param size; The icon size to look for + * @return Returns the path representing first found icon or + * NULL if none of the icons are found + * @brief Retrieves all of the information about the first found icon in + * the list. + * @note This function will search the given theme for all icons before falling + * back. This is useful when searching for mimetype icons. + */ EAPI const char *efreet_icon_list_find(const char *theme_name, Eina_List *icons, unsigned int size); + +/** + * @param theme_name The icon theme to look for + * @param icon The icon to look for + * @param size; The icon size to look for + * @return Returns the path to the given icon or NULL if none found + * @brief Retrives the path to the given icon. + */ EAPI const char *efreet_icon_path_find(const char *theme_name, const char *icon, unsigned int size); + +/** + * @param icon The Efreet_Icon to cleanup + * @return Returns no value. + * @brief Free's the given icon and all its internal data. + */ EAPI void efreet_icon_free(Efreet_Icon *icon); /** Modified: trunk/efreet/src/lib/efreet_ini.c =================================================================== --- trunk/efreet/src/lib/efreet_ini.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_ini.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -74,13 +74,6 @@ _efreet_ini_log_dom = -1; } -/** - * @param file The file to parse - * @return Returns a new Efreet_Ini structure initialized with the contents - * of @a file, or NULL on memory allocation failure - * @brief Creates and initializes a new Ini structure with the contents of - * @a file, or NULL on failure - */ EAPI Efreet_Ini * efreet_ini_new(const char *file) { @@ -287,11 +280,6 @@ return data; } -/** - * @param ini The Efreet_Ini to work with - * @return Returns no value - * @brief Frees the given Efree_Ini structure. - */ EAPI void efreet_ini_free(Efreet_Ini *ini) { @@ -301,12 +289,6 @@ FREE(ini); } -/** - * @param ini The Efreet_Ini to work with - * @param file The file to load - * @return Returns no value - * @brief Saves the given Efree_Ini structure. - */ EAPI int efreet_ini_save(Efreet_Ini *ini, const char *file) { @@ -329,12 +311,6 @@ return 1; } -/** - * @param ini The Efreet_Ini to work with - * @param section The section of the ini file we want to get values from - * @return Returns 1 if the section exists, otherwise 0 - * @brief Sets the current working section of the ini file to @a section - */ EAPI int efreet_ini_section_set(Efreet_Ini *ini, const char *section) { @@ -344,12 +320,6 @@ return (ini->section ? 1 : 0); } -/** - * @param ini The Efreet_Ini to work with - * @param section The section of the ini file we want to add - * @return Returns no value - * @brief Adds a new working section of the ini file to @a section - */ EAPI void efreet_ini_section_add(Efreet_Ini *ini, const char *section) { @@ -365,13 +335,6 @@ eina_hash_add(ini->data, section, hash); } -/** - * @param ini The Efree_Ini to work with - * @param key The key to lookup - * @return Returns the string associated with the given key or NULL if not - * found. - * @brief Retrieves the value for the given key or NULL if none found. - */ EAPI const char * efreet_ini_string_get(Efreet_Ini *ini, const char *key) { @@ -380,13 +343,6 @@ return eina_hash_find(ini->section, key); } -/** - * @param ini The Efree_Ini to work with - * @param key The key to use - * @param value The value to set - * @return Returns no value - * @brief Sets the value for the given key - */ EAPI void efreet_ini_string_set(Efreet_Ini *ini, const char *key, const char *value) { @@ -396,13 +352,6 @@ eina_hash_add(ini->section, key, eina_stringshare_add(value)); } -/** - * @param ini The Efree_Ini to work with - * @param key The key to lookup - * @return Returns the integer associated with the given key or -1 if not - * found. - * @brief Retrieves the value for the given key or -1 if none found. - */ EAPI int efreet_ini_int_get(Efreet_Ini *ini, const char *key) { @@ -416,13 +365,6 @@ return -1; } -/** - * @param ini The Efree_Ini to work with - * @param key The key to use - * @param value The value to set - * @return Returns no value - * @brief Sets the value for the given key - */ EAPI void efreet_ini_int_set(Efreet_Ini *ini, const char *key, int value) { @@ -434,13 +376,6 @@ efreet_ini_string_set(ini, key, str); } -/** - * @param ini The Efree_Ini to work with - * @param key The key to lookup - * @return Returns the double associated with the given key or -1 if not - * found. - * @brief Retrieves the value for the given key or -1 if none found. - */ EAPI double efreet_ini_double_get(Efreet_Ini *ini, const char *key) { @@ -454,13 +389,6 @@ return -1; } -/** - * @param ini The Efree_Ini to work with - * @param key The key to use - * @param value The value to set - * @return Returns no value - * @brief Sets the value for the given key - */ EAPI void efreet_ini_double_set(Efreet_Ini *ini, const char *key, double value) { @@ -476,12 +404,6 @@ efreet_ini_string_set(ini, key, str); } -/** - * @param ini The ini struct to work with - * @param key The key to search for - * @return Returns 1 if the boolean is true, 0 otherwise - * @brief Retrieves the boolean value at key @a key from the ini @a ini - */ EAPI unsigned int efreet_ini_boolean_get(Efreet_Ini *ini, const char *key) { @@ -495,13 +417,6 @@ return 0; } -/** - * @param ini The ini struct to work with - * @param key The key to use - * @param value The value to set - * @return Returns no value - * @brief Sets the value for the given key - */ EAPI void efreet_ini_boolean_set(Efreet_Ini *ini, const char *key, unsigned int value) { @@ -511,13 +426,6 @@ else efreet_ini_string_set(ini, key, "false"); } -/** - * @param ini The ini struct to work with - * @param key The key to search for - * @return Returns the utf8 encoded string associated with @a key, or NULL - * if none found - * @brief Retrieves the utf8 encoded string associated with @a key in the current locale or NULL if none found - */ EAPI const char * efreet_ini_localestring_get(Efreet_Ini *ini, const char *key) { @@ -574,13 +482,6 @@ return val; } -/** - * @param ini The ini struct to work with - * @param key The key to use - * @param value The value to set - * @return Returns no value - * @brief Sets the value for the given key - */ EAPI void efreet_ini_localestring_set(Efreet_Ini *ini, const char *key, const char *value) { @@ -615,12 +516,6 @@ efreet_ini_string_set(ini, buf, value); } -/** - * @param ini The ini struct to work with - * @param key The key to remove - * @return Returns no value - * @brief Remove the given key from the ini struct - */ EAPI void efreet_ini_key_unset(Efreet_Ini *ini, const char *key) { Modified: trunk/efreet/src/lib/efreet_ini.h =================================================================== --- trunk/efreet/src/lib/efreet_ini.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_ini.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -25,32 +25,153 @@ Eina_Hash *section; /**< currently selected section */ }; + +/** + * @param file The file to parse + * @return Returns a new Efreet_Ini structure initialized with the contents + * of @a file, or NULL on memory allocation failure + * @brief Creates and initializes a new Ini structure with the contents of + * @a file, or NULL on failure + */ EAPI Efreet_Ini *efreet_ini_new(const char *file); + +/** + * @param ini The Efreet_Ini to work with + * @return Returns no value + * @brief Frees the given Efree_Ini structure. + */ EAPI void efreet_ini_free(Efreet_Ini *ini); + +/** + * @param ini The Efreet_Ini to work with + * @param file The file to load + * @return Returns no value + * @brief Saves the given Efree_Ini structure. + */ EAPI int efreet_ini_save(Efreet_Ini *ini, const char *path); + +/** + * @param ini The Efreet_Ini to work with + * @param section The section of the ini file we want to get values from + * @return Returns 1 if the section exists, otherwise 0 + * @brief Sets the current working section of the ini file to @a section + */ EAPI int efreet_ini_section_set(Efreet_Ini *ini, const char *section); + +/** + * @param ini The Efreet_Ini to work with + * @param section The section of the ini file we want to add + * @return Returns no value + * @brief Adds a new working section of the ini file to @a section + */ EAPI void efreet_ini_section_add(Efreet_Ini *ini, const char *section); + +/** + * @param ini The Efree_Ini to work with + * @param key The key to lookup + * @return Returns the string associated with the given key or NULL if not + * found. + * @brief Retrieves the value for the given key or NULL if none found. + */ EAPI const char *efreet_ini_string_get(Efreet_Ini *ini, const char *key); + +/** + * @param ini The Efree_Ini to work with + * @param key The key to use + * @param value The value to set + * @return Returns no value + * @brief Sets the value for the given key + */ EAPI void efreet_ini_string_set(Efreet_Ini *ini, const char *key, const char *value); + +/** + * @param ini The ini struct to work with + * @param key The key to search for + * @return Returns the utf8 encoded string associated with @a key, or NULL + * if none found + * @brief Retrieves the utf8 encoded string associated with @a key in the current locale or NULL if none found + */ EAPI const char *efreet_ini_localestring_get(Efreet_Ini *ini, const char *key); + +/** + * @param ini The ini struct to work with + * @param key The key to use + * @param value The value to set + * @return Returns no value + * @brief Sets the value for the given key + */ EAPI void efreet_ini_localestring_set(Efreet_Ini *ini, const char *key, const char *value); + +/** + * @param ini The ini struct to work with + * @param key The key to search for + * @return Returns 1 if the boolean is true, 0 otherwise + * @brief Retrieves the boolean value at key @a key from the ini @a ini + */ EAPI unsigned int efreet_ini_boolean_get(Efreet_Ini *ini, const char *key); + +/** + * @param ini The ini struct to work with + * @param key The key to use + * @param value The value to set + * @return Returns no value + * @brief Sets the value for the given key + */ EAPI void efreet_ini_boolean_set(Efreet_Ini *ini, const char *key, unsigned int value); + +/** + * @param ini The Efree_Ini to work with + * @param key The key to lookup + * @return Returns the integer associated with the given key or -1 if not + * found. + * @brief Retrieves the value for the given key or -1 if none found. + */ EAPI int efreet_ini_int_get(Efreet_Ini *ini, const char *key); + +/** + * @param ini The Efree_Ini to work with + * @param key The key to use + * @param value The value to set + * @return Returns no value + * @brief Sets the value for the given key + */ EAPI void efreet_ini_int_set(Efreet_Ini *ini, const char *key, int value); + +/** + * @param ini The Efree_Ini to work with + * @param key The key to lookup + * @return Returns the double associated with the given key or -1 if not + * found. + * @brief Retrieves the value for the given key or -1 if none found. + */ EAPI double efreet_ini_double_get(Efreet_Ini *ini, const char *key); + +/** + * @param ini The Efree_Ini to work with + * @param key The key to use + * @param value The value to set + * @return Returns no value + * @brief Sets the value for the given key + */ EAPI void efreet_ini_double_set(Efreet_Ini *ini, const char *key, double value); + +/** + * @param ini The ini struct to work with + * @param key The key to remove + * @return Returns no value + * @brief Remove the given key from the ini struct + */ EAPI void efreet_ini_key_unset(Efreet_Ini *ini, const char *key); /** Modified: trunk/efreet/src/lib/efreet_menu.c =================================================================== --- trunk/efreet/src/lib/efreet_menu.c 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_menu.c 2011-04-08 11:01:08 UTC (rev 58487) @@ -36,30 +36,16 @@ #include "efreet_private.h" #include "efreet_xml.h" -/** - * Efreet_Menu_Move - */ typedef struct Efreet_Menu_Move Efreet_Menu_Move; -/** - * Efreet_Menu_Move - * Info on a menu movement - */ struct Efreet_Menu_Move { const char *old_name; /**< The menu path to move from */ const char *new_name; /**< The menu path to move too */ }; -/** - * Efreet_Menu_Internal - */ typedef struct Efreet_Menu_Internal Efreet_Menu_Internal; -/** - * Efreet_Menu_Internal - * Contains the information about a menu - */ struct Efreet_Menu_Internal { struct @@ -108,14 +94,8 @@ unsigned char deleted:1; /**< The menu is deleted */ }; -/** - * Efreet_Menu_App_Dir - */ typedef struct Efreet_Menu_App_Dir Efreet_Menu_App_Dir; -/** - * Holds information on an app dir - */ struct Efreet_Menu_App_Dir { const char *path; /**< directory path */ @@ -123,9 +103,6 @@ unsigned int legacy:1; /**< is this a legacy dir */ }; -/** - * The type of operations we can perform with a filter - */ enum Efreet_Menu_Filter_Op_Type { EFREET_MENU_FILTER_OP_OR, @@ -133,34 +110,18 @@ EFREET_MENU_FILTER_OP_NOT }; -/** - * Efreet_Menu_Filter_Op_Type - */ typedef enum Efreet_Menu_Filter_Op_Type Efreet_Menu_Filter_Op_Type; -/** - * The type of filter - */ enum Efreet_Menu_Filter_Type { EFREET_MENU_FILTER_INCLUDE, EFREET_MENU_FILTER_EXCLUDE }; -/** - * Efreet_Menu_Filter_Type - */ typedef enum Efreet_Menu_Filter_Type Efreet_Menu_Filter_Type; -/** - * Efreet_Menu_Filter_Op - */ typedef struct Efreet_Menu_Filter_Op Efreet_Menu_Filter_Op; -/** - * Efreet_Menu_Filter_Op - * Contains information on a filter operation - */ struct Efreet_Menu_Filter_Op { Efreet_Menu_Filter_Op_Type type; /**< The type of operation */ @@ -172,24 +133,14 @@ unsigned char all:1; /**< Applies to all .desktop files */ }; -/** - * Efreet_Menu_Filter - */ typedef struct Efreet_Menu_Filter Efreet_Menu_Filter; -/** - * Efreet_Menu_Filter - * Stores information on a filter - */ struct Efreet_Menu_Filter { Efreet_Menu_Filter_Type type; /**< The type of filter */ Efreet_Menu_Filter_Op *op; /**< The filter operations */ }; -/** - * The type of layout - */ enum Efreet_Menu_Layout_Type { EFREET_MENU_LAYOUT_MENUNAME, @@ -198,20 +149,10 @@ EFREET_MENU_LAYOUT_MERGE }; -/** - * Efreet_Menu_Layout_Type - */ typedef enum Efreet_Menu_Layout_Type Efreet_Menu_Layout_Type; -/** - * Efreet_Menu_Layout - */ typedef struct Efreet_Menu_Layout Efreet_Menu_Layout; -/** - * Efreet_Menu_Layout - * Stores information on a layout - */ struct Efreet_Menu_Layout { Efreet_Menu_Layout_Type type; /**< The type of layout */ @@ -225,15 +166,8 @@ signed char inline_alias; /**< Whether we should use the menu name when inlining */ }; -/** - * Efreet_Menu_Desktop - */ typedef struct Efreet_Menu_Desktop Efreet_Menu_Desktop; -/** - * Efreet_Menu_Desktop - * Stores information on a desktop for the menu - */ struct Efreet_Menu_Desktop { Efreet_Desktop *desktop; /**< The desktop we refer too */ @@ -397,10 +331,6 @@ static void efreet_menu_path_set(Efreet_Menu_Internal *internal, const char *path); -/** - * @return Returns 1 on success, 0 on failure - * @brief Initializes the Efreet Menu system. - */ int efreet_menu_init(void) { @@ -534,11 +464,6 @@ return 1; } -/** - * @return Returns no value - * @brief Initialize legacy kde support. This function blocks while - * the kde-config script is run. - */ EAPI int efreet_menu_kde_legacy_init(void) { @@ -578,10 +503,6 @@ return 1; } -/** - * @return Returns no value - * @brief Shuts down the Efreet menu system - */ void efreet_menu_shutdown(void) { @@ -603,12 +524,6 @@ _efreet_menu_log_dom = -1; } -/** - * @param name The internal name of the menu - * @return Returns the Efreet_Menu on success or - * NULL on failure - * @brief Creates a new menu - */ EAPI Efreet_Menu * efreet_menu_new(const char *name) { @@ -625,13 +540,6 @@ return menu; } -/** - * @brief Override which file is used for menu creation - * @param file The file to use for menu creation - * - * This file is only used if it exists, else the standard files will be used - * for the menu. - */ EAPI void efreet_menu_file_set(const char *file) { @@ -640,11 +548,6 @@ if (file) efreet_menu_file = eina_stringshare_add(file); } -/** - * @return Returns the Efreet_Menu_Internal representation of the default menu or - * NULL if none found - * @brief Creates the default menu representation - */ EAPI Efreet_Menu * efreet_menu_get(void) { @@ -680,12 +583,6 @@ return NULL; } -/** - * @param path The path of the menu to load - * @return Returns the Efreet_Menu_Internal representation on success or NULL on - * failure - * @brief Parses the given .menu file and creates the menu representation - */ EAPI Efreet_Menu * efreet_menu_parse(const char *path) { @@ -758,12 +655,6 @@ return entry; } -/** - * @param menu The menu to work with - * @param path The path where the menu should be saved - * @return Returns 1 on success, 0 on failure - * @brief Saves the menu to file - */ EAPI int efreet_menu_save(Efreet_Menu *menu, const char *path) { @@ -878,14 +769,6 @@ return 1; } -/** - * @param menu The menu to work with - * @param desktop The desktop to insert - * @param pos The position to place the new desktop - * @return Returns 1 on success, 0 on failure - * @brief Insert a desktop element in a menu structure. Only accepts desktop files - * in default directories. - */ EAPI int efreet_menu_desktop_insert(Efreet_Menu *menu, Efreet_Desktop *desktop, int pos) { @@ -914,13 +797,6 @@ return 1; } -/** - * @param menu The menu to work with - * @param desktop The desktop to remove - * @return Returns 1 on success, 0 on failure - * @brief Remove a desktop element in a menu structure. Only accepts desktop files - * in default directories. - */ EAPI int efreet_menu_desktop_remove(Efreet_Menu *menu, Efreet_Desktop *desktop) { @@ -940,13 +816,6 @@ return 0; } -/** - * @param menu The menu to work with - * @param menu The menu to work with - * @param indent The indent level to print the menu at - * @return Returns no value - * @brief Dumps the contents of the menu to the command line - */ EAPI void efreet_menu_dump(Efreet_Menu *menu, const char *indent) { @@ -982,6 +851,7 @@ } /** + * @internal * @param user_dir The user directory to work with * @param system_dirs The system directories to work with * @param suffix The path suffix to add @@ -2598,11 +2468,6 @@ return entry; } -/** - * @param entry The Efreet_Menu to free - * @return Returns no value - * @brief Frees the given structure - */ EAPI void efreet_menu_free(Efreet_Menu *entry) { Modified: trunk/efreet/src/lib/efreet_menu.h =================================================================== --- trunk/efreet/src/lib/efreet_menu.h 2011-04-08 10:43:13 UTC (rev 58486) +++ trunk/efreet/src/lib/efreet_menu.h 2011-04-08 11:01:08 UTC (rev 58487) @@ -43,21 +43,92 @@ Eina_List *entries; /**< The menu items */ }; + +/** + * @return Returns no value + * @brief Initialize legacy kde support. This function blocks while + * the kde-config script is run. + */ EAPI int efreet_menu_kde_legacy_init(void); +/** + * @param name The internal name of the menu + * @return Returns the Efreet_Menu on success or + * NULL on failure + * @brief Creates a new menu + */ EAPI Efreet_Menu *efreet_menu_new(const char *name); + +/** + * @brief Override which file is used for menu creation + * @param file The file to use for menu creation + * + * This file is only used if it exists, else the standard files will be used + * for the menu. + */ EAPI void efreet_menu_file_set(const char *file); + +/** + * @return Returns the Efreet_Menu_Internal representation of the default menu or + * NULL if none found + * @brief Creates the default menu representation + */ EAPI Efreet_Menu *efreet_menu_get(void); + +/** + * @param path The path of the menu to load + * @return Returns the Efreet_Menu_Internal representation on success or NULL on + * failure + * @brief Parses the given .menu file and creates the menu representation + */ EAPI Efreet_Menu *efreet_menu_parse(const char *path); + +/** + * @param menu The menu to work with + * @param path The path where the menu should be saved + * @return Returns 1 on success, 0 on failure + * @brief Saves the menu to file + */ EAPI int efreet_menu_save(Efreet_Menu *menu, const char *path); + +/** + * @param entry The Efreet_Menu to free + * @return Returns no value + * @brief Frees the given structure + */ EAPI void efreet_menu_free(Efreet_Menu *menu); + +/** + * @param menu The menu to work with + * @param desktop The desktop to insert + * @param pos The position to place the new desktop + * @return Returns 1 on success, 0 on failure + * @... [truncated message content] |
From: Enlightenment S. <no-...@en...> - 2011-06-26 23:11:14
|
Log: add errs for efreet cache init failures. Author: raster Date: 2011-06-26 16:11:07 -0700 (Sun, 26 Jun 2011) New Revision: 60707 Trac: http://trac.enlightenment.org/e/changeset/60707 Modified: trunk/efreet/src/lib/efreet_cache.c Modified: trunk/efreet/src/lib/efreet_cache.c =================================================================== --- trunk/efreet/src/lib/efreet_cache.c 2011-06-26 18:18:49 UTC (rev 60706) +++ trunk/efreet/src/lib/efreet_cache.c 2011-06-26 23:11:07 UTC (rev 60707) @@ -136,18 +136,30 @@ snprintf(buf, sizeof(buf), "%s/efreet", efreet_cache_home_get()); if (!ecore_file_exists(buf)) { - if (!ecore_file_mkpath(buf)) goto error; + if (!ecore_file_mkpath(buf)) + { + ERR("Failed to create directory '%s'", buf); + goto error; + } efreet_setowner(buf); } cache_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, cache_exe_cb, NULL); - if (!cache_exe_handler) goto error; + if (!cache_exe_handler) + { + ERR("Failed to add exe del handler"); + goto error; + } cache_monitor = ecore_file_monitor_add(buf, cache_update_cb, NULL); - if (!cache_monitor) goto error; + if (!cache_monitor) + { + ERR("Failed to set up ecore file monitor for '%s'", buf); + goto error; + } efreet_cache_icon_update(); efreet_cache_desktop_update(); |
From: Enlightenment S. <no-...@en...> - 2011-07-04 09:35:45
|
Log: enable mmap safety in efreet. Author: raster Date: 2011-07-04 02:35:39 -0700 (Mon, 04 Jul 2011) New Revision: 60978 Trac: http://trac.enlightenment.org/e/changeset/60978 Modified: trunk/efreet/src/lib/efreet_ini.c trunk/efreet/src/lib/efreet_mime.c trunk/efreet/src/lib/efreet_xml.c Modified: trunk/efreet/src/lib/efreet_ini.c =================================================================== --- trunk/efreet/src/lib/efreet_ini.c 2011-07-04 09:35:17 UTC (rev 60977) +++ trunk/efreet/src/lib/efreet_ini.c 2011-07-04 09:35:39 UTC (rev 60978) @@ -123,6 +123,9 @@ } left = file_stat.st_size; + /* let's make mmap safe and just get 0 pages for IO erro */ + eina_mmap_safety_enabled_set(EINA_TRUE); + buffer = mmap(NULL, left, PROT_READ, MAP_SHARED, fileno(f), 0); if (buffer == MAP_FAILED) { Modified: trunk/efreet/src/lib/efreet_mime.c =================================================================== --- trunk/efreet/src/lib/efreet_mime.c 2011-07-04 09:35:17 UTC (rev 60977) +++ trunk/efreet/src/lib/efreet_mime.c 2011-07-04 09:35:39 UTC (rev 60978) @@ -980,6 +980,9 @@ fd = open(file, O_RDONLY); if (fd == -1) return; + /* let's make mmap safe and just get 0 pages for IO erro */ + eina_mmap_safety_enabled_set(EINA_TRUE); + data = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); if (data == MAP_FAILED) { Modified: trunk/efreet/src/lib/efreet_xml.c =================================================================== --- trunk/efreet/src/lib/efreet_xml.c 2011-07-04 09:35:17 UTC (rev 60977) +++ trunk/efreet/src/lib/efreet_xml.c 2011-07-04 09:35:39 UTC (rev 60978) @@ -99,6 +99,9 @@ fd = open(file, O_RDONLY); if (fd == -1) goto efreet_error; + /* let's make mmap safe and just get 0 pages for IO erro */ + eina_mmap_safety_enabled_set(EINA_TRUE); + data = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); if (data == MAP_FAILED) goto efreet_error; |
From: Enlightenment S. <no-...@en...> - 2011-08-20 04:22:33
|
Log: hey.. if we use magic poinrters like... -1 for not existing... null would probably be fine though here)... we should always then handle all the cases correctly! fix segv in efreet shutdown Author: raster Date: 2011-08-19 21:22:24 -0700 (Fri, 19 Aug 2011) New Revision: 62616 Trac: http://trac.enlightenment.org/e/changeset/62616 Modified: trunk/efreet/src/lib/efreet_cache.c Modified: trunk/efreet/src/lib/efreet_cache.c =================================================================== --- trunk/efreet/src/lib/efreet_cache.c 2011-08-20 03:57:28 UTC (rev 62615) +++ trunk/efreet/src/lib/efreet_cache.c 2011-08-20 04:22:24 UTC (rev 62616) @@ -232,7 +232,7 @@ } if (old_desktop_caches) - WRN("This application has not properly closed all its desktop references!"); + ERR("This application has not properly closed all its desktop references!"); EINA_LIST_FREE(old_desktop_caches, d) { eina_hash_free(d->hash); @@ -1121,15 +1121,18 @@ IF_RELEASE(util_cache_names_key); IF_RELEASE(util_cache_hash_key); - d = NEW(Efreet_Old_Cache, 1); - if (!d) goto error; - d->hash = desktops; - d->ef = desktop_cache; - old_desktop_caches = eina_list_append(old_desktop_caches, d); - - desktops = eina_hash_string_superfast_new(NULL); - desktop_cache = NULL; - + if ((desktop_cache) && (desktop_cache != NON_EXISTING)) + { + d = NEW(Efreet_Old_Cache, 1); + if (!d) goto error; + d->hash = desktops; + d->ef = desktop_cache; + old_desktop_caches = eina_list_append(old_desktop_caches, d); + + desktops = eina_hash_string_superfast_new(NULL); + desktop_cache = NULL; + } + efreet_cache_array_string_free(util_cache_names); util_cache_names = NULL; |
From: Enlightenment S. <no-...@en...> - 2012-07-02 00:01:26
|
Log: with user-dirs - expand env vars. i suspect we have to deal with escapes too. Author: raster Date: 2012-07-01 17:01:16 -0700 (Sun, 01 Jul 2012) New Revision: 73115 Trac: http://trac.enlightenment.org/e/changeset/73115 Modified: trunk/efreet/src/lib/efreet_base.c Modified: trunk/efreet/src/lib/efreet_base.c =================================================================== --- trunk/efreet/src/lib/efreet_base.c 2012-07-01 22:44:55 UTC (rev 73114) +++ trunk/efreet/src/lib/efreet_base.c 2012-07-02 00:01:16 UTC (rev 73115) @@ -279,6 +279,51 @@ return dirs; } +static const char * +efreet_env_expand(const char *in) +{ + Eina_Strbuf *sb; + const char *ret, *p, *e1 = NULL, *e2 = NULL, *val; + char *env; + + if (!in) return NULL; + sb = eina_strbuf_new(); + if (!sb) return NULL; + + /* maximum length of any env var is the input string */ + env = alloca(strlen(in) + 1); + for (p = in; *p; p++) + { + if (!e1) + { + if (*p == '$') e1 = p + 1; + else eina_strbuf_append_char(sb, *p); + } + else if (!(((*p >= 'a') && (*p <= 'z')) || + ((*p >= 'A') && (*p <= 'Z')) || + ((*p >= '0') && (*p <= '9')) || + (*p == '_'))) + { + size_t len; + + e2 = p; + len = (size_t)(e2 - e1); + if (len > 0) + { + memcpy(env, e1, len); + env[len] = 0; + val = getenv(env); + if (val) eina_strbuf_append(sb, val); + } + e1 = NULL; + eina_strbuf_append_char(sb, *p); + } + } + ret = eina_stringshare_add(eina_strbuf_string_get(sb)); + eina_strbuf_free(sb); + return ret; +} + /** * @internal * @param key The user-dirs key to lookup @@ -334,5 +379,5 @@ ret = alloca(strlen(home) + strlen(fallback) + 2); sprintf(ret, "%s/%s", home, fallback); } - return eina_stringshare_add(ret); + return efreet_env_expand(ret); } |
From: Enlightenment S. <no-...@en...> - 2012-07-28 00:27:20
|
Log: remove efret private decl of public api. Author: raster Date: 2012-07-27 17:27:14 -0700 (Fri, 27 Jul 2012) New Revision: 74517 Trac: http://trac.enlightenment.org/e/changeset/74517 Modified: trunk/efreet/src/lib/efreet_private.h Modified: trunk/efreet/src/lib/efreet_private.h =================================================================== --- trunk/efreet/src/lib/efreet_private.h 2012-07-28 00:24:55 UTC (rev 74516) +++ trunk/efreet/src/lib/efreet_private.h 2012-07-28 00:27:14 UTC (rev 74517) @@ -194,8 +194,6 @@ size_t efreet_array_cat(char *buffer, size_t size, const char *strs[]); -const char *efreet_desktop_environment_get(void); - void efreet_cache_desktop_update(void); void efreet_cache_icon_update(void); |