summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hult <rhult@src.gnome.org>2003-11-26 16:53:42 +0000
committerRichard Hult <rhult@src.gnome.org>2003-11-26 16:53:42 +0000
commit3b48d2ff51de261bb4293f3b2c755cf1ef339d51 (patch)
treed3cbe857e3b8a142111b7eaf3a51889ebccc7e7b
parent5c8622fa25601a36c48d77506b2ba750152942a7 (diff)
downloadgconf-3b48d2ff51de261bb4293f3b2c755cf1ef339d51.tar.gz
And all_entries
-rw-r--r--gconf/gconf-dbus-utils.c3
-rw-r--r--gconf/gconf-dbus.c27
2 files changed, 17 insertions, 13 deletions
diff --git a/gconf/gconf-dbus-utils.c b/gconf/gconf-dbus-utils.c
index 1a9c0bc8..41eb235f 100644
--- a/gconf/gconf-dbus-utils.c
+++ b/gconf/gconf-dbus-utils.c
@@ -698,6 +698,9 @@ gconf_dbus_get_entry_values_from_message_iter (DBusMessageIter *iter,
{
DBusMessageIter dict;
+ if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_DICT)
+ return FALSE;
+
dbus_message_iter_init_dict_iterator (iter, &dict);
while (1)
diff --git a/gconf/gconf-dbus.c b/gconf/gconf-dbus.c
index 4d92920c..bf1b287d 100644
--- a/gconf/gconf-dbus.c
+++ b/gconf/gconf-dbus.c
@@ -1467,24 +1467,24 @@ gconf_engine_all_entries (GConfEngine* conf, const gchar* dir, GError** err)
}
g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
- dbus_message_iter_init (message, &iter);
+ dbus_message_iter_init (reply, &iter);
- while (0) /* FIXME: loop through and get the key/values */
+ while (1)
{
- GConfEntry* entry;
+ GConfEntry *entry;
GConfValue *value;
- value = NULL; /*gconf_dbus_create_gconf_value_from_message (&iter);*/
+ if (!gconf_dbus_get_entry_values_from_message_iter (&iter,
+ &key,
+ &value,
+ &is_default,
+ &is_writable,
+ &schema_name))
+ break;
- /* FIXME: get real values */
- key = NULL;
- is_default = FALSE;
- is_writable = FALSE;
- schema_name = NULL;
-
entry = gconf_entry_new_nocopy (gconf_concat_dir_and_key (dir, key),
value);
-
+
gconf_entry_set_is_default (entry, is_default);
gconf_entry_set_is_writable (entry, is_writable);
@@ -1494,10 +1494,11 @@ gconf_engine_all_entries (GConfEngine* conf, const gchar* dir, GError** err)
entries = g_slist_prepend (entries, entry);
- dbus_message_iter_next (&iter);
-
dbus_free (key);
dbus_free (schema_name);
+
+ if (!dbus_message_iter_next (&iter))
+ break;
}
dbus_message_unref (reply);