static void bar_sort_collection_list_build(GtkWidget *bookmarks)
{
- gchar *collect_path;
FileData *dir_fd;
GList *list;
GList *work;
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);
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);
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;
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;
}
{
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;
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: */
#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"
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: */
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)
{
{
CMData *cm;
GList *dlist;
- gchar *base;
FileData *dir_fd;
const gchar *msg;
const gchar *cache_folder;
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;
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);
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);
const gchar *title;
const gchar *btntext;
gpointer btnfunc;
- gchar *base;
const gchar *stock_id;
if (type == DIALOG_SAVE || type == DIALOG_SAVE_CLOSE)
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;
{
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)
{
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);
}
{
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, buf);
+ log_printf(_("Creating %s dir:%s\n"), GQ_APPNAME, path);
- if (!mkdir_utf8(buf, 0755))
- {
- log_printf(_("Could not create dir:%s\n"), buf);
- }
+ if (!mkdir_utf8(path, 0755))
+ {
+ log_printf(_("Could not create dir:%s\n"), path);
}
- g_free(buf);
}
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)
/* 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);
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();
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);
#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
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++)
{
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);
}
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);
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)
{
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)
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;
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);