diff options
author | Alexander Larsson <alexl@redhat.com> | 2009-06-25 09:19:54 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2009-06-25 09:19:54 +0200 |
commit | 4d7f64d2060884441d39726ce03393b2db597e06 (patch) | |
tree | a9f8ac952dac56c3596663a8a044b141d5192a17 | |
parent | 68607708bc34cfdc357a823fb6f909d3696fec78 (diff) | |
download | gvfs-4d7f64d2060884441d39726ce03393b2db597e06.tar.gz |
Allow unsetting keys with the standard Set dbus operation
Passing a key value type of Byte means unset that key.
-rw-r--r-- | metadata/meta-daemon.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/metadata/meta-daemon.c b/metadata/meta-daemon.c index f86e5819..51ce68cf 100644 --- a/metadata/meta-daemon.c +++ b/metadata/meta-daemon.c @@ -119,6 +119,7 @@ metadata_set (const char *treefile, gboolean res; const char *key; int n_elements; + char c; info = tree_info_lookup (treefile); if (info == NULL) @@ -160,7 +161,7 @@ metadata_set (const char *treefile, } g_strfreev (strv); } - else + else if (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_STRING) { /* string */ if (!_g_dbus_message_iter_get_args (iter, derror, @@ -178,6 +179,24 @@ metadata_set (const char *treefile, res = FALSE; } } + else if (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_BYTE) + { + /* Unset */ + if (!_g_dbus_message_iter_get_args (iter, derror, + DBUS_TYPE_BYTE, &c, + 0)) + { + res = FALSE; + break; + } + if (!meta_tree_unset (info->tree, path, key)) + { + dbus_set_error (derror, + DBUS_ERROR_FAILED, + _("Unable to unset metadata key")); + res = FALSE; + } + } } tree_info_schedule_writeout (info); |