mkimage : Fix generating multi and script images
authorPhilippe De Swert <philippedeswert@gmail.com>
Thu, 3 Dec 2015 22:11:23 +0000 (00:11 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 5 Dec 2015 23:22:35 +0000 (18:22 -0500)
Seems 92a655c3 broke creating multi and script type images.
Since the file1:file2:file3 string does not get split up,
it fails on trying to open an non-existing file.

mkimage -A arm -O linux -T multi -C none -d zImage:splash.bmp:device.dtb uimage
tools/mkimage: Can't open zImage:splash.bmp:device.dtb: No such file or directory

Since the sizes of the different parts seem to get added in the actual
routine that handles multi and script type images, we can probably skip the
bit of the code that causes the failure for that type of images.

Signed-off-by: Philippe De Swert <philippedeswert@gmail.com>
tools/mkimage.c

index 8af9d50e2cd9916109e5807510755fb131c54f4b..ae01cb1e83a5d545b4aa8337b503a926483d38b2 100644 (file)
@@ -311,21 +311,26 @@ NXTARG:           ;
                exit (retval);
        }
 
-       dfd = open(params.datafile, O_RDONLY | O_BINARY);
-       if (dfd < 0) {
-               fprintf(stderr, "%s: Can't open %s: %s\n",
-                       params.cmdname, params.datafile, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
+       if (!params.type == IH_TYPE_MULTI ||
+           !params.type == IH_TYPE_SCRIPT) {
+               dfd = open(params.datafile, O_RDONLY | O_BINARY);
+               if (dfd < 0) {
+                       fprintf(stderr, "%s: Can't open %s: %s\n",
+                               params.cmdname, params.datafile,
+                               strerror(errno));
+                       exit(EXIT_FAILURE);
+               }
 
-       if (fstat(dfd, &sbuf) < 0) {
-               fprintf(stderr, "%s: Can't stat %s: %s\n",
-                       params.cmdname, params.datafile, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
+               if (fstat(dfd, &sbuf) < 0) {
+                       fprintf(stderr, "%s: Can't stat %s: %s\n",
+                               params.cmdname, params.datafile,
+                               strerror(errno));
+                       exit(EXIT_FAILURE);
+               }
 
-       params.file_size = sbuf.st_size + tparams->header_size;
-       close(dfd);
+               params.file_size = sbuf.st_size + tparams->header_size;
+               close(dfd);
+       }
 
        /*
         * In case there an header with a variable