summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2011-08-15 11:49:46 -0400
committerRyan Lortie <desrt@desrt.ca>2011-08-15 11:55:51 -0400
commitdc004cac68af221b8a098746b1cd0e2a7685ddbd (patch)
tree5a1961bac54eba778258043099d8dc119d1af0a0
parent8c1e6f2ed3379fb93db7ba4067371f7b6ce3d348 (diff)
downloadgconf-migration-changes.tar.gz
GSettings migration: add --file argumentmigration-changes
Add a --file commandline argument to request running conversions from an extra file (in addition to the normal conversions).
-rw-r--r--gsettings/gsettings-data-convert.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/gsettings/gsettings-data-convert.c b/gsettings/gsettings-data-convert.c
index 14ef3d05..b529476a 100644
--- a/gsettings/gsettings-data-convert.c
+++ b/gsettings/gsettings-data-convert.c
@@ -531,9 +531,11 @@ main (int argc, char *argv[])
GError *error;
GHashTable *converted;
GOptionContext *context;
+ const gchar *extra_file = NULL;
GOptionEntry entries[] = {
{ "verbose", 0, 0, G_OPTION_ARG_NONE, &verbose, "show verbose messages", NULL },
{ "dry-run", 0, 0, G_OPTION_ARG_NONE, &dry_run, "do not perform any changes", NULL },
+ { "file", 0, 0, G_OPTION_ARG_STRING, &extra_file, "perform conversions from an extra file", NULL },
{ NULL }
};
@@ -555,6 +557,31 @@ main (int argc, char *argv[])
converted = load_state (&stored_mtime);
+ if (extra_file)
+ {
+ gchar *base;
+
+ base = g_path_get_basename (extra_file);
+
+ if (g_hash_table_lookup (converted, base))
+ {
+ if (verbose)
+ g_print ("'%s' is already converted. Skipping.\n", base);
+ }
+ else
+ {
+ if (handle_file (extra_file))
+ {
+ gchar *myname = g_strdup (base);
+
+ g_hash_table_insert (converted, myname, myname);
+ changed = TRUE;
+ }
+ }
+
+ g_free (base);
+ }
+
data_dirs = g_get_system_data_dirs ();
for (i = 0; data_dirs[i]; i++)
{