From 76cd7ae4ea876aa08bd8a85eb6cfdd4e31fbdd32 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 14 Aug 2013 18:20:02 -0400 Subject: [PATCH] libotutil: Add API to create an "ay" GVariant from GBytes We used to have a version of this, but since I'm trying to use GBytes more, this became a more common operation, and it's annoying to type out the whole G_VARIANT_TYPE ("ay") each time, and pass TRUE for trusted. https://bugzilla.gnome.org/show_bug.cgi?id=706031 --- src/libostree/ostree-core.c | 6 +++--- src/libotutil/ot-variant-utils.c | 6 ++++++ src/libotutil/ot-variant-utils.h | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c index 8dc2b960..f1e1fc97 100644 --- a/src/libostree/ostree-core.c +++ b/src/libostree/ostree-core.c @@ -182,6 +182,7 @@ read_xattr_name_array (const char *path, { ssize_t bytes_read; char *buf; + gs_unref_bytes GBytes *bytes = NULL; bytes_read = lgetxattr (path, p, NULL, 0); if (bytes_read < 0) @@ -194,18 +195,17 @@ read_xattr_name_array (const char *path, continue; buf = g_malloc (bytes_read); + bytes = g_bytes_new_take (buf, bytes_read); if (lgetxattr (path, p, buf, bytes_read) < 0) { ot_util_set_error_from_errno (error, errno); g_prefix_error (error, "lgetxattr (%s, %s) failed: ", path, p); - g_free (buf); goto out; } g_variant_builder_add (builder, "(@ay@ay)", g_variant_new_bytestring (p), - g_variant_new_from_data (G_VARIANT_TYPE ("ay"), - buf, bytes_read, FALSE, g_free, buf)); + ot_gvariant_new_ay_bytes (bytes)); p = p + strlen (p) + 1; } diff --git a/src/libotutil/ot-variant-utils.c b/src/libotutil/ot-variant-utils.c index 4255a102..0f2e57db 100644 --- a/src/libotutil/ot-variant-utils.c +++ b/src/libotutil/ot-variant-utils.c @@ -41,6 +41,12 @@ ot_gvariant_new_bytearray (const guchar *data, return ret; } +GVariant * +ot_gvariant_new_ay_bytes (GBytes *bytes) +{ + return g_variant_new_from_bytes (G_VARIANT_TYPE ("ay"), bytes, TRUE); +} + GHashTable * ot_util_variant_asv_to_hash_table (GVariant *variant) { diff --git a/src/libotutil/ot-variant-utils.h b/src/libotutil/ot-variant-utils.h index e8f8f5ff..83a3f540 100644 --- a/src/libotutil/ot-variant-utils.h +++ b/src/libotutil/ot-variant-utils.h @@ -29,6 +29,8 @@ G_BEGIN_DECLS GVariant *ot_gvariant_new_bytearray (const guchar *data, gsize len); +GVariant *ot_gvariant_new_ay_bytes (GBytes *bytes); + GHashTable *ot_util_variant_asv_to_hash_table (GVariant *variant); GVariant * ot_util_variant_take_ref (GVariant *variant);