From patchwork Wed Jul 8 09:52:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?UTF-8?q?Myl=C3=A8ne=20Josserand?= X-Patchwork-Id: 241032 List-Id: U-Boot discussion From: mylene.josserand at collabora.com (=?UTF-8?q?Myl=C3=A8ne=20Josserand?=) Date: Wed, 8 Jul 2020 11:52:50 +0200 Subject: [PATCH v2] mkimage: Fix error message if write less data then expected Message-ID: <20200708095250.9649-1-mylene.josserand@collabora.com> 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 Reviewed-by: Walter Lozano --- Changes since v1: Set the message to be more explicit and saying that it is probably a "No space left on device" tools/mkimage.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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); }