Message ID | 20200708095250.9649-1-mylene.josserand@collabora.com |
---|---|
State | Accepted |
Commit | dd85dc55eb147cdcced1a4ee143b487d4aa6afa6 |
Delegated to: | Tom Rini |
Headers | show |
Series | [v2] mkimage: Fix error message if write less data then expected | expand |
On Wed, Jul 08, 2020 at 11:52:50AM +0200, Mylène Josserand wrote: > 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> Applied to u-boot/master, thanks!
Hello, On 7/17/20 10:58 PM, Tom Rini wrote: > On Wed, Jul 08, 2020 at 11:52:50AM +0200, Mylène Josserand wrote: > >> 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> > > Applied to u-boot/master, thanks! > Great, thank you! Best regards, Mylène
diff --git a/tools/mkimage.c b/tools/mkimage.c index d2cd1917874..7cb666d4822 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); }