diff options
author | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 14:24:32 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 14:24:32 +0000 |
commit | 33167345fadd071dc00ee67d4410397162d7e0b2 (patch) | |
tree | 8525425c73c88dc6b3a25a3697dea09925222a1b /common/gvfsdaemonprotocol.c | |
parent | 3c0b23bd7421537bc59e7e7ce191f9a3ca220fad (diff) | |
download | gvfs-33167345fadd071dc00ee67d4410397162d7e0b2.tar.gz |
Add daemon side query attribute support
Original git commit by Alexander Larsson <alexl@redhat.com> at 1183735279 +0200
svn path=/trunk/; revision=678
Diffstat (limited to 'common/gvfsdaemonprotocol.c')
-rw-r--r-- | common/gvfsdaemonprotocol.c | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/common/gvfsdaemonprotocol.c b/common/gvfsdaemonprotocol.c index 1d6030d1..4993d6d8 100644 --- a/common/gvfsdaemonprotocol.c +++ b/common/gvfsdaemonprotocol.c @@ -412,7 +412,6 @@ _g_dbus_get_file_info (DBusMessageIter *iter, return NULL; } - GFileAttributeInfoList * _g_dbus_get_attribute_info_list (DBusMessageIter *iter, GError **error) @@ -454,3 +453,46 @@ _g_dbus_get_attribute_info_list (DBusMessageIter *iter, return list; } + +void +_g_dbus_append_attribute_info_list (DBusMessageIter *iter, + GFileAttributeInfoList *list) +{ + DBusMessageIter array_iter, struct_iter; + int i; + dbus_uint32_t dbus_type; + + if (!dbus_message_iter_open_container (iter, + DBUS_TYPE_ARRAY, + DBUS_STRUCT_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_UINT32_AS_STRING + DBUS_STRUCT_END_CHAR_AS_STRING, + &array_iter)) + _g_dbus_oom (); + + for (i = 0; i < list->n_infos; i++) + { + if (!dbus_message_iter_open_container (&array_iter, + DBUS_TYPE_STRUCT, + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_UINT32_AS_STRING, + &struct_iter)) + _g_dbus_oom (); + + if (!dbus_message_iter_append_basic (&struct_iter, + DBUS_TYPE_STRING, &list->infos[i].name)) + _g_dbus_oom (); + + dbus_type = list->infos[i].type; + if (!dbus_message_iter_append_basic (&struct_iter, + DBUS_TYPE_UINT32, &dbus_type)) + _g_dbus_oom (); + + if (!dbus_message_iter_close_container (&array_iter, &struct_iter)) + _g_dbus_oom (); + } + + if (!dbus_message_iter_close_container (iter, &array_iter)) + _g_dbus_oom (); +} |