--- a/libpurple/util.c Sun Oct 02 07:01:19 2016 +0300
+++ b/libpurple/util.c Sun Oct 02 07:11:20 2016 +0300
@@ -49,16 +49,17 @@
static JsonGenerator *escape_js_gen = NULL;
-move_to_xdg_base_dir(const char *purple_xdg_dir, char *subdir)
+move_to_xdg_base_dir(const char *purple_xdg_dir, char *name)
- gboolean xdg_dir_exists;
- xdg_dir_exists = g_file_test(purple_xdg_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
+ gboolean xdg_path_exists; + /* Check if destination dir exists, otherwise create it */ + xdg_path_exists = g_file_test(purple_xdg_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR); + if (!xdg_path_exists) { - mkdir_res = purple_build_dir(purple_xdg_dir, (S_IRUSR | S_IWUSR | S_IXUSR));
+ mkdir_res = purple_build_dir(purple_xdg_dir, S_IRWXU); purple_debug_error("util", "Error creating xdg directory %s: %s; failed migration\n",
purple_xdg_dir, g_strerror(errno));
@@ -66,25 +67,24 @@
- xdg_dir = g_build_filename(purple_xdg_dir, subdir, NULL);
- xdg_dir_exists = g_file_test(xdg_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
- gboolean old_dir_exists;
- 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);
- g_rename(old_dir, xdg_dir);
+ xdg_path = g_build_filename(purple_xdg_dir, name, NULL); + xdg_path_exists = g_file_test(xdg_path, G_FILE_TEST_EXISTS); + if (!xdg_path_exists) { + gboolean old_path_exists; + old_path = g_build_filename(purple_user_dir(), name, NULL); + old_path_exists = g_file_test(old_path, G_FILE_TEST_EXISTS); + g_rename(old_path, xdg_path);