[glib] Allow to list keys in all schemas
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Allow to list keys in all schemas
- Date: Wed, 23 Feb 2011 05:18:45 +0000 (UTC)
commit 766d70729b8671a3ac7b2139b635ac5555d858fa
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Feb 23 00:13:39 2011 -0500
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'
docs/reference/gio/gsettings.xml | 10 ++++---
gio/gsettings-tool.c | 54 ++++++++++++++++++++++++-------------
2 files changed, 41 insertions(+), 23 deletions(-)
---
diff --git a/docs/reference/gio/gsettings.xml b/docs/reference/gio/gsettings.xml
index 5a3bd21..1d8e381 100644
--- a/docs/reference/gio/gsettings.xml
+++ b/docs/reference/gio/gsettings.xml
@@ -22,7 +22,7 @@
<command>gsettings</command>
<arg choice="plain">monitor</arg>
<arg choice="plain"><replaceable>SCHEMA</replaceable><arg choice="opt">:<replaceable>PATH</replaceable></arg></arg>
- <arg choice="plain"><replaceable>KEY</replaceable></arg>
+ <arg choice="opt"><replaceable>KEY</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>gsettings</command>
@@ -70,7 +70,7 @@
<cmdsynopsis>
<command>gsettings</command>
<arg choice="plain">list-recursively</arg>
- <arg choice="plain"><replaceable>SCHEMA</replaceable><arg choice="opt">:<replaceable>PATH</replaceable></arg></arg>
+ <arg choice="opt"><replaceable>SCHEMA</replaceable><arg choice="opt">:<replaceable>PATH</replaceable></arg></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>gsettings</command>
@@ -116,7 +116,8 @@ The value is printed out as a serialised
<term><option>monitor</option></term>
<listitem><para>
Monitors <replaceable>KEY</replaceable> for changes and prints the changed
-values. Monitoring will continue until the process is terminated.
+values. If no <replaceable>KEY</replaceable> is specified, all keys in the
+schema are monitored. Monitoring will continue until the process is terminated.
</para></listitem>
</varlistentry>
@@ -185,7 +186,8 @@ Lists the children of <replaceable>SCHEMA</replaceable>.
<varlistentry>
<term><option>list-recursively</option></term>
<listitem><para>
-Lists keys and values, recursively.
+Lists keys and values, recursively. If no <replaceable>SCHEMA</replaceable>
+is given, list keys in all schemas.
</para></listitem>
</varlistentry>
diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c
index ce624b9..14bd99f 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)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]