
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 prafulla@marvell.com --- Change log: v2: added code rewritten to look it better as per review feedback for v1
tools/mkimage.c | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/tools/mkimage.c b/tools/mkimage.c index 02cdb95..dc42924 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -28,7 +28,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; @@ -60,6 +60,7 @@ main (int argc, char **argv) struct stat sbuf; unsigned char *ptr; char *name = ""; + int retval;
cmdname = *argv;
@@ -219,24 +220,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); }
/* @@ -480,7 +481,7 @@ usage () exit (EXIT_FAILURE); }
-static void +static int image_verify_header (char *ptr, int image_size) { int len; @@ -500,7 +501,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; @@ -513,7 +514,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); @@ -523,8 +524,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; }
/**