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 <prafulla@marvell.com>
Signed-off-by: Wolfgang Denk <wd@denx.de>
This commit is contained in:
Prafulla Wadaskar 2009-08-10 18:49:37 +05:30 committed by Tom Rix
parent f587fed25c
commit 40864630b2

View file

@ -27,7 +27,7 @@
extern unsigned long crc32 (unsigned long crc, const char *buf, unsigned int len); extern unsigned long crc32 (unsigned long crc, const char *buf, unsigned int len);
static void copy_file (int, const char *, int); static void copy_file (int, const char *, int);
static void usage (void); static void usage (void);
static void image_verify_header (char *, int); static int image_verify_header (char *, int);
static void fit_handle_file (void); static void fit_handle_file (void);
char *datafile; char *datafile;
@ -59,6 +59,7 @@ main (int argc, char **argv)
struct stat sbuf; struct stat sbuf;
unsigned char *ptr; unsigned char *ptr;
char *name = ""; char *name = "";
int retval;
cmdname = *argv; cmdname = *argv;
@ -218,24 +219,24 @@ NXTARG: ;
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
} }
if (fdt_check_header (ptr)) { if (!(retval = fdt_check_header (ptr))) {
/* old-style image */
image_verify_header ((char *)ptr, sbuf.st_size);
image_print_contents ((image_header_t *)ptr);
} else {
/* FIT image */ /* FIT image */
fit_print_contents (ptr); 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) munmap((void *)ptr, sbuf.st_size);
(void) close (ifd); (void) close (ifd);
exit (EXIT_SUCCESS); exit (retval);
} else if (fflag) { } else if (fflag) {
/* Flattened Image Tree (FIT) format handling */ /* Flattened Image Tree (FIT) format handling */
debug ("FIT format handling\n"); debug ("FIT format handling\n");
fit_handle_file (); fit_handle_file ();
exit (EXIT_SUCCESS); exit (retval);
} }
/* /*
@ -479,7 +480,7 @@ usage ()
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
} }
static void static int
image_verify_header (char *ptr, int image_size) image_verify_header (char *ptr, int image_size)
{ {
int len; int len;
@ -499,7 +500,7 @@ image_verify_header (char *ptr, int image_size)
fprintf (stderr, fprintf (stderr,
"%s: Bad Magic Number: \"%s\" is no valid image\n", "%s: Bad Magic Number: \"%s\" is no valid image\n",
cmdname, imagefile); cmdname, imagefile);
exit (EXIT_FAILURE); return -FDT_ERR_BADMAGIC;
} }
data = (char *)hdr; data = (char *)hdr;
@ -512,7 +513,7 @@ image_verify_header (char *ptr, int image_size)
fprintf (stderr, fprintf (stderr,
"%s: ERROR: \"%s\" has bad header checksum!\n", "%s: ERROR: \"%s\" has bad header checksum!\n",
cmdname, imagefile); cmdname, imagefile);
exit (EXIT_FAILURE); return -FDT_ERR_BADSTATE;
} }
data = ptr + sizeof(image_header_t); data = ptr + sizeof(image_header_t);
@ -522,8 +523,9 @@ image_verify_header (char *ptr, int image_size)
fprintf (stderr, fprintf (stderr,
"%s: ERROR: \"%s\" has corrupted data!\n", "%s: ERROR: \"%s\" has corrupted data!\n",
cmdname, imagefile); cmdname, imagefile);
exit (EXIT_FAILURE); return -FDT_ERR_BADSTRUCTURE;
} }
return 0;
} }
/** /**