Use common function for getting XDG specific directory xdg-dirs

Fri, 30 Jun 2017 16:12:25 +0300

author
qarkai <qarkai@gmail.com>
date
Fri, 30 Jun 2017 16:12:25 +0300
branch
xdg-dirs
changeset 38892
eff4283fc188
parent 38891
f59bb8304c21
child 38893
ea7c40572374

Use common function for getting XDG specific directory

libpurple/util.c file | annotate | diff | comparison | revisions
--- a/libpurple/util.c	Fri Jun 30 15:39:44 2017 +0300
+++ b/libpurple/util.c	Fri Jun 30 16:12:25 2017 +0300
@@ -2959,46 +2959,36 @@
 	return user_dir;
 }
 
+static const gchar *
+purple_xdg_dir(gchar **xdg_dir, const gchar *xdg_base_dir, const gchar *xdg_type)
+{
+	if (!*xdg_dir) {
+		if (!custom_user_dir) {
+			*xdg_dir = g_build_filename(xdg_base_dir, "purple", NULL);
+		} else {
+			*xdg_dir = g_build_filename(custom_user_dir, xdg_type, NULL);
+		}
+	}
+
+	return *xdg_dir;
+}
+
 const gchar *
 purple_cache_dir(void)
 {
-	if (!cache_dir) {
-		if (!custom_user_dir) {
-			cache_dir = g_build_filename(g_get_user_cache_dir(), "purple", NULL);
-		} else {
-			cache_dir = g_build_filename(custom_user_dir, "cache", NULL);
-		}
-	}
-
-	return cache_dir;
+	return purple_xdg_dir(&cache_dir, g_get_user_cache_dir(), "cache");
 }
 
 const gchar *
 purple_config_dir(void)
 {
-	if (!config_dir) {
-		if (!custom_user_dir) {
-			config_dir = g_build_filename(g_get_user_config_dir(), "purple", NULL);
-		} else {
-			config_dir = g_build_filename(custom_user_dir, "config", NULL);
-		}
-	}
-
-	return config_dir;
+	return purple_xdg_dir(&config_dir, g_get_user_config_dir(), "config");
 }
 
 const gchar *
 purple_data_dir(void)
 {
-	if (!data_dir) {
-		if (!custom_user_dir) {
-			data_dir = g_build_filename(g_get_user_data_dir(), "purple", NULL);
-		} else {
-			data_dir = g_build_filename(custom_user_dir, "data", NULL);
-		}
-	}
-
-	return data_dir;
+	return purple_xdg_dir(&data_dir, g_get_user_data_dir(), "data");
 }
 
 void
@@ -3108,7 +3098,7 @@
 gboolean
 purple_util_write_data_to_config_file(const char *filename, const char *data, gssize size)
 {
-	const char *config_dir = purple_cache_dir();
+	const char *config_dir = purple_config_dir();
 	gboolean ret = purple_util_write_data_to_file_common(config_dir, filename, data, size);
 
 	return ret;
@@ -3117,7 +3107,7 @@
 gboolean
 purple_util_write_data_to_data_file(const char *filename, const char *data, gssize size)
 {
-	const char *data_dir = purple_cache_dir();
+	const char *data_dir = purple_data_dir();
 	gboolean ret = purple_util_write_data_to_file_common(data_dir, filename, data, size);
 
 	return ret;

mercurial