pidgin/pidgin

Adapt migration for files
xdg-dirs
2016-10-02, qarkai
d6ebc5c97d74
Parents d92586bbada9
Children 4e9c691a1d2d
Adapt migration for files
--- 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;
static void
-move_to_xdg_base_dir(const char *purple_xdg_dir, char *subdir)
+move_to_xdg_base_dir(const char *purple_xdg_dir, char *name)
{
- char *xdg_dir;
- gboolean xdg_dir_exists;
-
- xdg_dir_exists = g_file_test(purple_xdg_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
- if (!xdg_dir_exists) {
+ char *xdg_path;
+ 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) {
gint mkdir_res;
- mkdir_res = purple_build_dir(purple_xdg_dir, (S_IRUSR | S_IWUSR | S_IXUSR));
+ mkdir_res = purple_build_dir(purple_xdg_dir, S_IRWXU);
if (mkdir_res == -1) {
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);
- if (!xdg_dir_exists) {
- char *old_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);
-
- if (old_dir_exists) {
- 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) {
+ char *old_path;
+ 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);
+ if (old_path_exists) {
+ g_rename(old_path, xdg_path);
}
- g_free(old_dir);
- old_dir = NULL;
+ g_free(old_path);
+ old_path = NULL;
}
- g_free(xdg_dir);
- xdg_dir = NULL;
+ g_free(xdg_path);
+ xdg_path = NULL;
return;
}