# HG changeset patch # User zas_ # Date 1226770245 0 # Node ID 3a7af6a8cd5f9672949e27592d6286f399c64b95 # Parent 5fe3b8b3a612f7b537d6c82ba7097fa7cbe96975 Use functions to return directories instead of constants. Following functions were added: get_collections_dir() get_metadata_cache_dir() get_rc_dir() get_thumbnails_cache_dir() get_trash_dir() They return the full directory path. diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/bar_sort.c --- a/src/bar_sort.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/bar_sort.c Sat Nov 15 17:30:45 2008 +0000 @@ -89,7 +89,6 @@ static void bar_sort_collection_list_build(GtkWidget *bookmarks) { - gchar *collect_path; FileData *dir_fd; GList *list; GList *work; @@ -97,11 +96,9 @@ history_list_free_key(SORT_KEY_COLLECTIONS); bookmark_list_set_key(bookmarks, SORT_KEY_COLLECTIONS); - collect_path = g_build_filename(homedir(), GQ_RC_DIR_COLLECTIONS, NULL); - dir_fd = file_data_new_simple(collect_path); + dir_fd = file_data_new_simple(get_collections_dir()); filelist_read(dir_fd, &list, NULL); file_data_unref(dir_fd); - g_free(collect_path); list = filelist_sort_path(list); @@ -436,7 +433,7 @@ name = tmp; } - path = g_build_filename(homedir(), GQ_RC_DIR_COLLECTIONS, name, NULL); + path = g_build_filename(get_collections_dir(), name, NULL); if (isfile(path)) { gchar *text = g_strdup_printf(_("The collection:\n%s\nalready exists."), name); diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/cache.c --- a/src/cache.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/cache.c Sat Nov 15 17:30:45 2008 +0000 @@ -623,17 +623,17 @@ switch (type) { case CACHE_TYPE_THUMB: - *cache_rc = GQ_CACHE_RC_THUMB; + *cache_rc = get_thumbnails_cache_dir(); *cache_local = GQ_CACHE_LOCAL_THUMB; *cache_ext = GQ_CACHE_EXT_THUMB; break; case CACHE_TYPE_SIM: - *cache_rc = GQ_CACHE_RC_THUMB; + *cache_rc = get_thumbnails_cache_dir(); *cache_local = GQ_CACHE_LOCAL_THUMB; *cache_ext = GQ_CACHE_EXT_SIM; break; case CACHE_TYPE_METADATA: - *cache_rc = GQ_CACHE_RC_METADATA; + *cache_rc = get_metadata_cache_dir(); *cache_local = GQ_CACHE_LOCAL_METADATA; *cache_ext = GQ_CACHE_EXT_METADATA; break; @@ -669,7 +669,7 @@ if (!path) { - path = g_build_filename(homedir(), cache_rc, base, name, NULL); + path = g_build_filename(cache_rc, base, name, NULL); if (mode) *mode = 0755; } @@ -695,7 +695,7 @@ { gchar *path; gchar *name = g_strconcat(source, cache_ext, NULL); - path = g_build_filename(homedir(), cache_rc, name, NULL); + path = g_build_filename(cache_rc, name, NULL); g_free(name); return path; @@ -794,4 +794,25 @@ return ret; } + +const gchar *get_thumbnails_cache_dir(void) +{ + static gchar *thumbnails_cache_dir = NULL; + + if (thumbnails_cache_dir) return thumbnails_cache_dir; + + thumbnails_cache_dir = g_build_filename(get_rc_dir(), GQ_CACHE_THUMB, NULL); + return thumbnails_cache_dir; +} + +const gchar *get_metadata_cache_dir(void) +{ + static gchar *metadata_cache_dir = NULL; + + if (metadata_cache_dir) return metadata_cache_dir; + + metadata_cache_dir = g_build_filename(get_rc_dir(), GQ_CACHE_METADATA, NULL); + return metadata_cache_dir; +} + /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/cache.h --- a/src/cache.h Sat Nov 15 10:35:43 2008 +0000 +++ b/src/cache.h Sat Nov 15 17:30:45 2008 +0000 @@ -18,8 +18,8 @@ #include "similar.h" -#define GQ_CACHE_RC_THUMB GQ_RC_DIR G_DIR_SEPARATOR_S "thumbnails" -#define GQ_CACHE_RC_METADATA GQ_RC_DIR G_DIR_SEPARATOR_S "metadata" +#define GQ_CACHE_THUMB "thumbnails" +#define GQ_CACHE_METADATA "metadata" #define GQ_CACHE_LOCAL_THUMB ".thumbnails" #define GQ_CACHE_LOCAL_METADATA ".metadata" @@ -74,6 +74,8 @@ gchar *cache_get_location(CacheType type, const gchar *source, gint include_name, mode_t *mode); gchar *cache_find_location(CacheType type, const gchar *source); +const gchar *get_thumbnails_cache_dir(void); +const gchar *get_metadata_cache_dir(void); #endif /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/cache_maint.c --- a/src/cache_maint.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/cache_maint.c Sat Nov 15 17:30:45 2008 +0000 @@ -143,20 +143,17 @@ gboolean still_have_a_file = TRUE; gsize base_length; const gchar *cache_folder; - gchar *base; if (cm->metadata) { - cache_folder = GQ_CACHE_RC_METADATA; + cache_folder = get_metadata_cache_dir(); } else { - cache_folder = GQ_CACHE_RC_THUMB; + cache_folder = get_thumbnails_cache_dir(); } - base = g_build_filename(homedir(), cache_folder, NULL); - base_length = strlen(base); - g_free(base); + base_length = strlen(cache_folder); if (!cm->list) { @@ -276,7 +273,6 @@ { CMData *cm; GList *dlist; - gchar *base; FileData *dir_fd; const gchar *msg; const gchar *cache_folder; @@ -284,24 +280,21 @@ if (metadata) { - cache_folder = GQ_CACHE_RC_METADATA; + cache_folder = get_metadata_cache_dir(); } else { - cache_folder = GQ_CACHE_RC_THUMB; + cache_folder = get_thumbnails_cache_dir(); } - base = g_build_filename(homedir(), cache_folder, NULL); - dir_fd = file_data_new_simple(base); + dir_fd = file_data_new_simple(cache_folder); if (!filelist_read(dir_fd, NULL, &dlist)) { - g_free(base); file_data_unref(dir_fd); return; } dlist = g_list_append(dlist, dir_fd); - g_free(base); cm = g_new0(CMData, 1); cm->list = dlist; @@ -1246,7 +1239,7 @@ group = pref_group_new(gd->vbox, FALSE, _("Thumbnail cache"), GTK_ORIENTATION_VERTICAL); - cache_manager_location_label(group, GQ_CACHE_RC_THUMB); + cache_manager_location_label(group, get_thumbnails_cache_dir()); table = pref_table_new(group, 2, 2, FALSE, FALSE); @@ -1288,7 +1281,7 @@ group = pref_group_new(gd->vbox, FALSE, _("Metadata"), GTK_ORIENTATION_VERTICAL); - cache_manager_location_label(group, GQ_CACHE_RC_METADATA); + cache_manager_location_label(group, get_metadata_cache_dir()); table = pref_table_new(group, 2, 1, FALSE, FALSE); diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/collect-dlg.c --- a/src/collect-dlg.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/collect-dlg.c Sat Nov 15 17:30:45 2008 +0000 @@ -162,7 +162,6 @@ const gchar *title; const gchar *btntext; gpointer btnfunc; - gchar *base; const gchar *stock_id; if (type == DIALOG_SAVE || type == DIALOG_SAVE_CLOSE) @@ -200,10 +199,8 @@ generic_dialog_add_message(GENERIC_DIALOG(fd), NULL, title, NULL); file_dialog_add_button(fd, stock_id, btntext, btnfunc, TRUE); - base = g_build_filename(homedir(), GQ_RC_DIR_COLLECTIONS, NULL); - file_dialog_add_path_widgets(fd, base, path, + file_dialog_add_path_widgets(fd, get_collections_dir(), path, "collection_load_save", GQ_COLLECTION_EXT, _("Collection Files")); - g_free(base); fd->type = type; diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/collect-io.c --- a/src/collect-io.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/collect-io.c Sat Nov 15 17:30:45 2008 +0000 @@ -668,14 +668,11 @@ { GList *list; GList *work; - gchar *base; FileData *dir_fd; - base = g_build_filename(homedir(), GQ_RC_DIR_COLLECTIONS, NULL); - dir_fd = file_data_new_simple(base); + dir_fd = file_data_new_simple(get_collections_dir()); filelist_read(dir_fd, &list, NULL); file_data_unref(dir_fd); - g_free(base); work = collection_manager_entry_list; while (work && list) diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/main.c --- a/src/main.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/main.c Sat Nov 15 17:30:45 2008 +0000 @@ -430,7 +430,7 @@ { gchar *path; - path = g_build_filename(homedir(), GQ_RC_DIR, RC_HISTORY_NAME, NULL); + path = g_build_filename(get_rc_dir(), RC_HISTORY_NAME, NULL); history_list_load(path); g_free(path); } @@ -439,26 +439,21 @@ { gchar *path; - path = g_build_filename(homedir(), GQ_RC_DIR, RC_HISTORY_NAME, NULL); + path = g_build_filename(get_rc_dir(), RC_HISTORY_NAME, NULL); history_list_save(path); g_free(path); } -static void check_for_home_path(gchar *path) +static void check_for_home_path(const gchar *path) { - gchar *buf; + if (isdir(path)) return; - buf = g_build_filename(homedir(), path, NULL); - if (!isdir(buf)) + log_printf(_("Creating %s dir:%s\n"), GQ_APPNAME, path); + + if (!mkdir_utf8(path, 0755)) { - log_printf(_("Creating %s dir:%s\n"), GQ_APPNAME, buf); - - if (!mkdir_utf8(buf, 0755)) - { - log_printf(_("Could not create dir:%s\n"), buf); - } + log_printf(_("Could not create dir:%s\n"), path); } - g_free(buf); } @@ -538,7 +533,7 @@ static gchar *accep_map_filename(void) { - return g_build_filename(homedir(), GQ_RC_DIR, "accels", NULL); + return g_build_filename(get_rc_dir(), "accels", NULL); } static void accel_map_save(void) @@ -569,7 +564,7 @@ /* If a gtkrc file exists in the rc directory, add it to the * list of files to be parsed at the end of gtk_init() */ - path = g_build_filename(homedir(), GQ_RC_DIR, "gtkrc", NULL); + path = g_build_filename(get_rc_dir(), "gtkrc", NULL); pathl = path_from_utf8(path); if (access(pathl, R_OK) == 0) gtk_rc_add_default_file(pathl); @@ -722,10 +717,10 @@ log_printf("!!! %s may quit unexpectedly with a relocation error.\n", GQ_APPNAME); } - check_for_home_path(GQ_RC_DIR); - check_for_home_path(GQ_RC_DIR_COLLECTIONS); - check_for_home_path(GQ_CACHE_RC_THUMB); - check_for_home_path(GQ_CACHE_RC_METADATA); + check_for_home_path(get_rc_dir()); + check_for_home_path(get_collections_dir()); + check_for_home_path(get_thumbnails_cache_dir()); + check_for_home_path(get_metadata_cache_dir()); keys_load(); filter_add_defaults(); @@ -856,7 +851,7 @@ if (startup_full_screen) layout_image_full_screen_start(lw); if (startup_in_slideshow) layout_image_slideshow_start(lw); - buf = g_build_filename(homedir(), GQ_RC_DIR, ".command", NULL); + buf = g_build_filename(get_rc_dir(), ".command", NULL); remote_connection = remote_server_init(buf, cd); g_free(buf); diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/main.h --- a/src/main.h Sat Nov 15 10:35:43 2008 +0000 +++ b/src/main.h Sat Nov 15 17:30:45 2008 +0000 @@ -71,9 +71,9 @@ #define GQ_WMCLASS GQ_APPNAME_LC -#define GQ_RC_DIR "." GQ_APPNAME_LC -#define GQ_RC_DIR_COLLECTIONS GQ_RC_DIR G_DIR_SEPARATOR_S "collections" -#define GQ_RC_DIR_TRASH GQ_RC_DIR G_DIR_SEPARATOR_S "trash" +#define GQ_RC_DIR "." GQ_APPNAME_LC +#define GQ_COLLECTIONS_DIR "collections" +#define GQ_TRASH_DIR "trash" #define GQ_SYSTEM_WIDE_DIR "/etc/" GQ_APPNAME_LC diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/options.c --- a/src/options.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/options.c Sat Nov 15 17:30:45 2008 +0000 @@ -183,12 +183,10 @@ path = g_build_filename(homedir(), "Desktop", NULL); bookmark_add_default(_("Desktop"), path); g_free(path); - path = g_build_filename(homedir(), GQ_RC_DIR_COLLECTIONS, NULL); - bookmark_add_default(_("Collections"), path); - g_free(path); + bookmark_add_default(_("Collections"), get_collections_dir()); g_free(options->file_ops.safe_delete_path); - options->file_ops.safe_delete_path = g_build_filename(homedir(), GQ_RC_DIR_TRASH, NULL); + options->file_ops.safe_delete_path = g_strdup(get_trash_dir()); for (i = 0; i < COLOR_PROFILE_INPUTS; i++) { @@ -260,7 +258,7 @@ sync_options_with_current_state(options); - rc_path = g_build_filename(homedir(), GQ_RC_DIR, RC_FILE_NAME, NULL); + rc_path = g_build_filename(get_rc_dir(), RC_FILE_NAME, NULL); save_options_to(rc_path, options); g_free(rc_path); } @@ -278,7 +276,7 @@ g_free(rc_path); } - rc_path = g_build_filename(homedir(), GQ_RC_DIR, RC_FILE_NAME, NULL); + rc_path = g_build_filename(get_rc_dir(), RC_FILE_NAME, NULL); success = load_options_from(rc_path, options); DEBUG_1("Loading options from %s ... %s", rc_path, success ? "done" : "failed"); g_free(rc_path); diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/remote.c --- a/src/remote.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/remote.c Sat Nov 15 17:30:45 2008 +0000 @@ -701,7 +701,7 @@ gint started = FALSE; gchar *buf; - buf = g_build_filename(homedir(), GQ_RC_DIR, ".command", NULL); + buf = g_build_filename(get_rc_dir(), ".command", NULL); rc = remote_client_open(buf); if (!rc) { diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/search.c --- a/src/search.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/search.c Sat Nov 15 17:30:45 2008 +0000 @@ -2219,12 +2219,8 @@ else if (sd->search_type == SEARCH_MATCH_ALL) { /* search metadata */ - path = g_build_filename(homedir(), GQ_CACHE_RC_METADATA, NULL); - file_data_unref(sd->search_dir_fd); - sd->search_dir_fd = file_data_new_simple(path); - g_free(path); - + sd->search_dir_fd = file_data_new_simple(get_metadata_cache_dir()); search_start(sd); } else if (sd->search_type == SEARCH_MATCH_CONTAINS) diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/ui_fileops.c --- a/src/ui_fileops.c Sat Nov 15 10:35:43 2008 +0000 +++ b/src/ui_fileops.c Sat Nov 15 17:30:45 2008 +0000 @@ -186,6 +186,39 @@ return home; } +const gchar *get_rc_dir(void) +{ + static gchar *rc_dir = NULL; + + if (rc_dir) return rc_dir; + + rc_dir = g_build_filename(homedir(), GQ_RC_DIR, NULL); + + return rc_dir; +} + +const gchar *get_collections_dir(void) +{ + static gchar *collections_dir = NULL; + + if (collections_dir) return collections_dir; + + collections_dir = g_build_filename(get_rc_dir(), GQ_COLLECTIONS_DIR, NULL); + + return collections_dir; +} + +const gchar *get_trash_dir(void) +{ + static gchar *trash_dir = NULL; + + if (trash_dir) return trash_dir; + + trash_dir = g_build_filename(get_rc_dir(), GQ_TRASH_DIR, NULL); + + return trash_dir; +} + gint stat_utf8(const gchar *s, struct stat *st) { gchar *sl; diff -r 5fe3b8b3a612 -r 3a7af6a8cd5f src/ui_fileops.h --- a/src/ui_fileops.h Sat Nov 15 10:35:43 2008 +0000 +++ b/src/ui_fileops.h Sat Nov 15 17:30:45 2008 +0000 @@ -35,6 +35,10 @@ gchar *path_from_utf8(const gchar *path); const gchar *homedir(void); +const gchar *get_rc_dir(void); +const gchar *get_collections_dir(void); +const gchar *get_trash_dir(void); + gint stat_utf8(const gchar *s, struct stat *st); gint lstat_utf8(const gchar *s, struct stat *st); gint isname(const gchar *s);