diff options
author | Matthias Clasen <mclasen@redhat.com> | 2011-02-23 00:13:39 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-02-23 00:18:37 -0500 |
commit | 766d70729b8671a3ac7b2139b635ac5555d858fa (patch) | |
tree | 8b4543bf4505fbe3757974fa7c8ea946828fccb6 /gio/gsettings-tool.c | |
parent | 51dd7c5e4a1cf10177725a8c471731f0c4947159 (diff) |
Allow to list keys in all schemas
Make the schema argument to gsettings list-recursively optional.
This allows to search for not exactly known keys by going
gsettings list-recursively | grep 'font'
Diffstat (limited to 'gio/gsettings-tool.c')
-rw-r--r-- | gio/gsettings-tool.c | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c index ce624b91d..14bd99f22 100644 --- a/gio/gsettings-tool.c +++ b/gio/gsettings-tool.c @@ -240,29 +240,44 @@ gsettings_list_recursively (GSettings *settings, const gchar *key, const gchar *value) { - gchar **children; - gint i; - - enumerate (settings); + if (settings) + { + gchar **children; + gint i; - children = g_settings_list_children (settings); + enumerate (settings); + children = g_settings_list_children (settings); + for (i = 0; children[i]; i++) + { + GSettings *child; + gchar *schema; - for (i = 0; children[i]; i++) - { - GSettings *child; - gchar *schema; + child = g_settings_get_child (settings, children[i]); + g_object_get (child, "schema", &schema, NULL); - child = g_settings_get_child (settings, children[i]); - g_object_get (child, "schema", &schema, NULL); + if (is_schema (schema)) + enumerate (child); - if (is_schema (schema)) - enumerate (child); + g_object_unref (child); + g_free (schema); + } - g_object_unref (child); - g_free (schema); + g_strfreev (children); } + else + { + const gchar * const *schemas; + gint i; - g_strfreev (children); + schemas = g_settings_list_schemas (); + + for (i = 0; schemas[i]; i++) + { + settings = g_settings_new (schemas[i]); + enumerate (settings); + g_object_unref (settings); + } + } } static void @@ -485,8 +500,9 @@ gsettings_help (gboolean requested, else if (strcmp (command, "list-recursively") == 0) { - description = _("List keys and values, recursively"); - synopsis = N_("SCHEMA[:PATH]"); + description = _("List keys and values, recursively\n" + "If no SCHEMA is given, list all keys\n"); + synopsis = N_("[SCHEMA[:PATH]]"); } else if (strcmp (command, "get") == 0) @@ -640,7 +656,7 @@ main (int argc, char **argv) else if (argc == 3 && strcmp (argv[1], "list-children") == 0) function = gsettings_list_children; - else if (argc == 3 && strcmp (argv[1], "list-recursively") == 0) + else if ((argc == 2 || argc == 3) && strcmp (argv[1], "list-recursively") == 0) function = gsettings_list_recursively; else if (argc == 4 && strcmp (argv[1], "range") == 0) |