From 174ebaefcc2b1b94f4a628e60f150b7209230dbf Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 18 Sep 2014 15:26:36 -0400 Subject: [PATCH] gresource: Make extract work better When no section is specified, look for the resource to extract in all sections - previously, we would stop after the first section. --- gio/gresource-tool.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/gio/gresource-tool.c b/gio/gresource-tool.c index bbe43c3..cc4e78b 100644 --- a/gio/gresource-tool.c +++ b/gio/gresource-tool.c @@ -113,9 +113,8 @@ extract_resource (GResource *resource, const gchar *path) { GBytes *bytes; - GError *error = NULL; - bytes = g_resource_lookup_data (resource, path, 0, &error); + bytes = g_resource_lookup_data (resource, path, 0, NULL); if (bytes != NULL) { gconstpointer data; @@ -127,11 +126,6 @@ extract_resource (GResource *resource, g_printerr ("Data truncated\n"); g_bytes_unref (bytes); } - else - { - g_printerr ("%s\n", error->message); - g_error_free (error); - } } /* Elf functions {{{1 */ @@ -230,10 +224,16 @@ resource_from_section (GElf_Shdr *shdr, if (contents != MAP_FAILED) { GBytes *bytes; + GError *error = NULL; bytes = g_bytes_new_static (contents + page_offset, shdr->sh_size); - resource = g_resource_new_from_data (bytes, NULL); + resource = g_resource_new_from_data (bytes, &error); g_bytes_unref (bytes); + if (error) + { + g_printerr ("%s\n", error->message); + g_error_free (error); + } } else { @@ -316,7 +316,10 @@ extract_resource_cb (GElf_Shdr *shdr, extract_resource (resource, d->path); g_resource_unref (resource); - return FALSE; + if (d->section) + return FALSE; + + return TRUE; } static void @@ -397,7 +400,6 @@ cmd_list (const gchar *file, GResource *resource; #ifdef HAVE_LIBELF - Elf *elf; int fd; -- 2.7.4