app: migrate also from ~/snap/ if the 3.0 folder is not found in XDG config home.
This commit is contained in:
parent
820c5fbd10
commit
6246735966
1 changed files with 64 additions and 0 deletions
|
|
@ -124,6 +124,7 @@ static gchar * user_install_old_style_gimpdir (void);
|
||||||
|
|
||||||
#ifdef G_OS_UNIX
|
#ifdef G_OS_UNIX
|
||||||
static gchar * user_install_flatpak_gimpdir (gint minor);
|
static gchar * user_install_flatpak_gimpdir (gint minor);
|
||||||
|
static gchar * user_install_snap_gimpdir (gint minor);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void user_install_log (GimpUserInstall *install,
|
static void user_install_log (GimpUserInstall *install,
|
||||||
|
|
@ -379,6 +380,52 @@ user_install_detect_old (GimpUserInstall *install,
|
||||||
g_free (flatpak_dir);
|
g_free (flatpak_dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (major == 3 && minor == 0)
|
||||||
|
{
|
||||||
|
/* This is special-casing for GIMP 3.0 as snap where
|
||||||
|
* the config folder would be in $HOME/snap/<etc> (see #15547).
|
||||||
|
* For GIMP 3.2, even the snap will always be in
|
||||||
|
* $XDG_CONFIG_HOME. But then we want a migration to still
|
||||||
|
* find the previous config folder.
|
||||||
|
*/
|
||||||
|
gchar *snap_dir = user_install_snap_gimpdir (minor);
|
||||||
|
|
||||||
|
if (snap_dir)
|
||||||
|
/* This first test is for finding a 3.0 snap config
|
||||||
|
* dir from a non-snap GIMP 3.2+.
|
||||||
|
*/
|
||||||
|
migrate = g_file_test (snap_dir, G_FILE_TEST_IS_DIR);
|
||||||
|
|
||||||
|
if (! migrate &&
|
||||||
|
g_file_test (g_getenv ("SNAP"), G_FILE_TEST_IS_DIR) &&
|
||||||
|
g_getenv ("SNAP_USER_DATA") != NULL)
|
||||||
|
{
|
||||||
|
/* Now we check $SNAP_USER_DATA/.config/GIMP because this is where
|
||||||
|
* local ~/snap/ is mounted inside the sandbox.
|
||||||
|
* So this second test is for finding a 3.0 snap
|
||||||
|
* config dir from a snap GIMP 3.2+.
|
||||||
|
*/
|
||||||
|
g_free (snap_dir);
|
||||||
|
snap_dir = g_build_filename (g_getenv ("SNAP_USER_DATA"), ".config/GIMP/", version, NULL);
|
||||||
|
|
||||||
|
migrate = g_file_test (snap_dir, G_FILE_TEST_IS_DIR);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (migrate)
|
||||||
|
{
|
||||||
|
install->old_major = 3;
|
||||||
|
install->old_minor = minor;
|
||||||
|
|
||||||
|
g_free (dir);
|
||||||
|
dir = snap_dir;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_free (snap_dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (migrate)
|
if (migrate)
|
||||||
|
|
@ -469,6 +516,23 @@ user_install_flatpak_gimpdir (gint minor)
|
||||||
|
|
||||||
return gimp_dir;
|
return gimp_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar *
|
||||||
|
user_install_snap_gimpdir (gint minor)
|
||||||
|
{
|
||||||
|
const gchar *home_dir = g_get_home_dir ();
|
||||||
|
gchar *version = g_strdup_printf ("3.%d", minor);
|
||||||
|
gchar *gimp_dir = NULL;
|
||||||
|
|
||||||
|
if (home_dir)
|
||||||
|
gimp_dir = g_build_filename (home_dir,
|
||||||
|
"snap/gimp/current/.config/GIMP/",
|
||||||
|
version, NULL);
|
||||||
|
|
||||||
|
g_free (version);
|
||||||
|
|
||||||
|
return gimp_dir;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue