47 lines
1.2 KiB
Diff
47 lines
1.2 KiB
Diff
Support transparant gunzipping in the readnotes utility.
|
|
|
|
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
|
|
---
|
|
tools/xcutils/readnotes.c | 14 ++++++++++++--
|
|
1 file changed, 12 insertions(+), 2 deletions(-)
|
|
|
|
Index: build-32-release304-13138/tools/xcutils/readnotes.c
|
|
===================================================================
|
|
--- build-32-release304-13138.orig/tools/xcutils/readnotes.c
|
|
+++ build-32-release304-13138/tools/xcutils/readnotes.c
|
|
@@ -11,6 +11,7 @@
|
|
#include <sys/mman.h>
|
|
|
|
#include <xg_private.h>
|
|
+#include <xc_dom.h> /* gunzip bits */
|
|
|
|
#include <xen/libelf.h>
|
|
|
|
@@ -33,8 +34,8 @@ static void print_numeric_note(const cha
|
|
int main(int argc, char **argv)
|
|
{
|
|
const char *f;
|
|
- int fd,h,size,count;
|
|
- void *image;
|
|
+ int fd,h,size,usize,count;
|
|
+ void *image,*tmp;
|
|
struct stat st;
|
|
struct elf_binary elf;
|
|
const elf_shdr *shdr;
|
|
@@ -68,6 +69,15 @@ int main(int argc, char **argv)
|
|
}
|
|
size = st.st_size;
|
|
|
|
+ usize = xc_dom_check_gzip(image, st.st_size);
|
|
+ if (usize)
|
|
+ {
|
|
+ tmp = malloc(usize);
|
|
+ xc_dom_do_gunzip(image, st.st_size, tmp, usize);
|
|
+ image = tmp;
|
|
+ size = usize;
|
|
+ }
|
|
+
|
|
if (0 != elf_init(&elf, image, size))
|
|
{
|
|
fprintf(stderr, "File %s is not an ELF image\n", f);
|