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 <prafu...@marvell.com>
---
 tools/mkimage.c |   27 +++++++++++++--------------
 1 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/tools/mkimage.c b/tools/mkimage.c
index 02cdb95..b7b383a 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,21 @@ 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 {
-                       /* FIT image */
+               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 +478,7 @@ usage ()
        exit (EXIT_FAILURE);
 }
 
-static void
+static int
 image_verify_header (char *ptr, int image_size)
 {
        int len;
@@ -500,7 +498,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 +511,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 +521,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;
 }
 
 /**
-- 
1.5.3.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to