[U-Boot] [PATCH v2 1/8] tools: mkimage : bugfix returns correct value for list command

Prafulla Wadaskar prafulla at marvell.com
Mon Aug 10 15:19:37 CEST 2009


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 at 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;
 }
 
 /**
-- 
1.5.3.3



More information about the U-Boot mailing list