[ostree] libotutil: Add API to create an "ay" GVariant from GBytes
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] libotutil: Add API to create an "ay" GVariant from GBytes
- Date: Wed, 14 Aug 2013 23:43:05 +0000 (UTC)
commit 76cd7ae4ea876aa08bd8a85eb6cfdd4e31fbdd32
Author: Colin Walters <walters verbum org>
Date: Wed Aug 14 18:20:02 2013 -0400
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 8dc2b96..f1e1fc9 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 4255a10..0f2e57d 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 e8f8f5f..83a3f54 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]