From 40864630b29218bd0bcf711382e587bc1c02cf52 Mon Sep 17 00:00:00 2001 From: Prafulla Wadaskar Date: Mon, 10 Aug 2009 18:49:37 +0530 Subject: [PATCH] tools: mkimage : bugfix returns correct value for list command List command always return "EXIT_SUCCESS" even in case of failure by any means. This patch return 0 if list command is sucessful, returns negative value reported by check_header functions Signed-off-by: Prafulla Wadaskar Signed-off-by: Wolfgang Denk --- tools/mkimage.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tools/mkimage.c b/tools/mkimage.c index 7fd9fd1..dc2d4c5 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -27,7 +27,7 @@ extern unsigned long crc32 (unsigned long crc, const char *buf, unsigned int len); static void copy_file (int, const char *, int); static void usage (void); -static void image_verify_header (char *, int); +static int image_verify_header (char *, int); static void fit_handle_file (void); char *datafile; @@ -59,6 +59,7 @@ main (int argc, char **argv) struct stat sbuf; unsigned char *ptr; char *name = ""; + int retval; cmdname = *argv; @@ -218,24 +219,24 @@ NXTARG: ; exit (EXIT_FAILURE); } - if (fdt_check_header (ptr)) { - /* old-style image */ - image_verify_header ((char *)ptr, sbuf.st_size); - image_print_contents ((image_header_t *)ptr); - } else { + if (!(retval = fdt_check_header (ptr))) { /* FIT image */ fit_print_contents (ptr); + } else if (!(retval = image_verify_header ((char *)ptr, + sbuf.st_size))) { + /* old-style image */ + image_print_contents ((image_header_t *)ptr); } (void) munmap((void *)ptr, sbuf.st_size); (void) close (ifd); - exit (EXIT_SUCCESS); + exit (retval); } else if (fflag) { /* Flattened Image Tree (FIT) format handling */ debug ("FIT format handling\n"); fit_handle_file (); - exit (EXIT_SUCCESS); + exit (retval); } /* @@ -479,7 +480,7 @@ usage () exit (EXIT_FAILURE); } -static void +static int image_verify_header (char *ptr, int image_size) { int len; @@ -499,7 +500,7 @@ image_verify_header (char *ptr, int image_size) fprintf (stderr, "%s: Bad Magic Number: \"%s\" is no valid image\n", cmdname, imagefile); - exit (EXIT_FAILURE); + return -FDT_ERR_BADMAGIC; } data = (char *)hdr; @@ -512,7 +513,7 @@ image_verify_header (char *ptr, int image_size) fprintf (stderr, "%s: ERROR: \"%s\" has bad header checksum!\n", cmdname, imagefile); - exit (EXIT_FAILURE); + return -FDT_ERR_BADSTATE; } data = ptr + sizeof(image_header_t); @@ -522,8 +523,9 @@ image_verify_header (char *ptr, int image_size) fprintf (stderr, "%s: ERROR: \"%s\" has corrupted data!\n", cmdname, imagefile); - exit (EXIT_FAILURE); + return -FDT_ERR_BADSTRUCTURE; } + return 0; } /** -- 2.7.4