diff options
author | Mylène Josserand <mylene.josserand@collabora.com> | 2020-07-08 11:52:50 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-07-17 10:47:19 -0400 |
commit | dd85dc55eb147cdcced1a4ee143b487d4aa6afa6 (patch) | |
tree | 2682df53acb19a923be986ecf38d4bc54f23f541 /tools/mkimage.c | |
parent | 5c6a4d5a2779d7c2611319076d9aa4a23981855f (diff) | |
download | u-boot-dd85dc55eb147cdcced1a4ee143b487d4aa6afa6.zip u-boot-dd85dc55eb147cdcced1a4ee143b487d4aa6afa6.tar.gz u-boot-dd85dc55eb147cdcced1a4ee143b487d4aa6afa6.tar.bz2 |
mkimage: Fix error message if write less data then expected
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>
Diffstat (limited to 'tools/mkimage.c')
-rw-r--r-- | tools/mkimage.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/mkimage.c b/tools/mkimage.c index d2cd191..7cb666d 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -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); } |