diff options
author | Ryan Lortie <desrt@desrt.ca> | 2010-06-10 15:27:46 -0400 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2010-06-10 15:27:46 -0400 |
commit | afea703422001cbbe8bbd2e13842008a482cd9ae (patch) | |
tree | b24b3d6b566e172ad08c995bcdec14f3c575e22c | |
parent | 9a8cba9eb53f105b752aac7bb16c7c83c6617caf (diff) | |
download | dconf-afea703422001cbbe8bbd2e13842008a482cd9ae.tar.gz |
Implement byteswapping in the reader
-rw-r--r-- | gvdb-reader.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gvdb-reader.c b/gvdb-reader.c index 699fddb..a043060 100644 --- a/gvdb-reader.c +++ b/gvdb-reader.c @@ -438,11 +438,23 @@ gvdb_table_get_value (GvdbTable *file, const gchar *key) { const struct gvdb_hash_item *item; + GVariant *value; if ((item = gvdb_table_lookup (file, key, 'v')) == NULL) return NULL; - return gvdb_table_value_from_item (file, item); + value = gvdb_table_value_from_item (file, item); + + if (value && file->byteswapped) + { + GVariant *tmp; + + tmp = g_variant_byteswap (value); + g_variant_unref (value); + value = tmp; + } + + return value; } /** @@ -579,6 +591,15 @@ gvdb_table_walk (GvdbTable *table, if (value != NULL) { + if (table->byteswapped) + { + GVariant *tmp; + + tmp = g_variant_byteswap (value); + g_variant_unref (value); + value = tmp; + } + value_func (name, name_len, value, user_data); g_variant_unref (value); } |