--- a/libpurple/util.c Sun Sep 25 21:06:42 2016 +0300
+++ b/libpurple/util.c Sun Sep 25 21:57:30 2016 +0300
@@ -48,8 +48,6 @@
static JsonNode *escape_js_node = NULL;
static JsonGenerator *escape_js_gen = NULL;
-/* If legacy directory for libpurple exists, move it to location following
-* xdg base dir spec. https://developer.pidgin.im/ticket/10029 */
move_to_xdg_base_dir(const char *purple_xdg_dir, char *subdir)
@@ -74,7 +72,7 @@
- old_dir = g_build_filename(purple_home_dir(), ".purple", subdir, NULL);
+ old_dir = g_build_filename(purple_user_dir(), subdir, NULL); old_dir_exists = g_file_test(old_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
@@ -91,13 +89,15 @@
+/* If legacy directory for libpurple exists, move it to location following +* xdg base dir spec. https://developer.pidgin.im/ticket/10029 */ migrate_to_xdg_base_dirs(void)
- char *legacy_purple_dir;
+ const char *legacy_purple_dir; - legacy_purple_dir = g_build_filename(purple_home_dir(), ".purple", NULL);
+ legacy_purple_dir = purple_user_dir(); dir_exists = g_file_test(legacy_purple_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
move_to_xdg_base_dir(purple_data_dir(), "certificates");
@@ -105,9 +105,6 @@
move_to_xdg_base_dir(purple_data_dir(), "logs");
- g_free(legacy_purple_dir);
- legacy_purple_dir = NULL;
@@ -210,7 +207,10 @@
escape_js_node = json_node_new(JSON_NODE_VALUE);
escape_js_gen = json_generator_new();
json_node_set_boolean(escape_js_node, FALSE);
- migrate_to_xdg_base_dirs();
+ if (custom_user_dir == NULL) { + migrate_to_xdg_base_dirs(); @@ -3003,6 +3003,10 @@
+ if (custom_user_dir != NULL) { + return custom_user_dir; cache_dir = g_build_filename(g_get_user_cache_dir(), "purple", NULL);
@@ -3013,20 +3017,28 @@
+ if (custom_user_dir != NULL) { + return custom_user_dir; config_dir = g_build_filename(g_get_user_config_dir(), "purple", NULL);
+ if (custom_user_dir != NULL) { + return custom_user_dir; data_dir = g_build_filename(g_get_user_data_dir(), "purple", NULL);