diff options
author | Simon Glass <sjg@chromium.org> | 2015-08-30 16:55:22 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-09-02 21:28:23 -0600 |
commit | 424b86ae597fa933b94fa91a6683e8c6b47af81d (patch) | |
tree | 5245d0750e01edde3481655231d5d90fdd6e2898 /tools | |
parent | 73a88d0e441ca389b548cf6104b8440ba858b1eb (diff) |
mkimage: Allow padding to any length
At present there is an arbitrary limit of 4KB for padding. Rockchip needs
more than that, so remove this restriction.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/mkimage.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/tools/mkimage.c b/tools/mkimage.c index e81d4550835..c50af0510dc 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -488,12 +488,6 @@ copy_file (int ifd, const char *datafile, int pad) int size; struct image_type_params *tparams = imagetool_get_type(params.type); - if (pad >= sizeof(zeros)) { - fprintf(stderr, "%s: Can't pad to %d\n", - params.cmdname, pad); - exit(EXIT_FAILURE); - } - memset(zeros, 0, sizeof(zeros)); if (params.vflag) { @@ -563,11 +557,18 @@ copy_file (int ifd, const char *datafile, int pad) exit (EXIT_FAILURE); } } else if (pad > 1) { - if (write(ifd, (char *)&zeros, pad) != pad) { - fprintf(stderr, "%s: Write error on %s: %s\n", - params.cmdname, params.imagefile, - strerror(errno)); - exit(EXIT_FAILURE); + while (pad > 0) { + int todo = sizeof(zeros); + + if (todo > pad) + todo = pad; + if (write(ifd, (char *)&zeros, todo) != todo) { + fprintf(stderr, "%s: Write error on %s: %s\n", + params.cmdname, params.imagefile, + strerror(errno)); + exit(EXIT_FAILURE); + } + pad -= todo; } } |