mkimage: Fix error message if write less data then expected
authorMylène Josserand <mylene.josserand@collabora.com>
Wed, 8 Jul 2020 09:52:50 +0000 (11:52 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 17 Jul 2020 14:47:19 +0000 (10:47 -0400)
Add a new error message in case the size of data written
are shorter than the one expected.

Currently, it will lead to the following error message:

"mkimage: Write error on uImage: Success"

This is not explicit when the error is because the device
doesn't have enough space. Let's use a more understandable message:

"mkimage: Write only 4202432/4682240 bytes, probably no space left on the device"

Signed-off-by: Mylène Josserand <mylene.josserand@collabora.com>
Reviewed-by: Walter Lozano <walter.lozano@collabora.com>
tools/mkimage.c

index d2cd191..7cb666d 100644 (file)
@@ -674,7 +674,7 @@ copy_file (int ifd, const char *datafile, int pad)
        int zero = 0;
        uint8_t zeros[4096];
        int offset = 0;
-       int size;
+       int size, ret;
        struct image_type_params *tparams = imagetool_get_type(params.type);
 
        memset(zeros, 0, sizeof(zeros));
@@ -730,9 +730,16 @@ copy_file (int ifd, const char *datafile, int pad)
        }
 
        size = sbuf.st_size - offset;
-       if (write(ifd, ptr + offset, size) != size) {
-               fprintf (stderr, "%s: Write error on %s: %s\n",
-                       params.cmdname, params.imagefile, strerror(errno));
+
+       ret = write(ifd, ptr + offset, size);
+       if (ret != size) {
+               if (ret < 0)
+                       fprintf (stderr, "%s: Write error on %s: %s\n",
+                                params.cmdname, params.imagefile, strerror(errno));
+               else if (ret < size)
+                       fprintf (stderr, "%s: Write only %d/%d bytes, "\
+                                "probably no space left on the device\n",
+                                params.cmdname, ret, size);
                exit (EXIT_FAILURE);
        }