summaryrefslogtreecommitdiff
path: root/tools/mkimage.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-06-23 21:39:12 (GMT)
committerSimon Glass <sjg@chromium.org>2015-07-21 23:39:29 (GMT)
commit92a655c326b22de58dcd5371ca1a62fdc57f8e04 (patch)
treec4be6e5c792223d25a44f667a47e533a91bbfddc /tools/mkimage.c
parentaea3d40d05f0eb8627ac0999315cad5c4b3676f5 (diff)
downloadu-boot-fsl-qoriq-92a655c326b22de58dcd5371ca1a62fdc57f8e04.tar.xz
mkimage: Set up a file size parameter and keep it updated
Some functions called by mkimage would like to know the output file size. Initially this is the same as the input file size, but it may be affected by adding headers, etc. Add this information to the image parameters. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'tools/mkimage.c')
-rw-r--r--tools/mkimage.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/mkimage.c b/tools/mkimage.c
index 8808d70..e81d455 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -75,6 +75,7 @@ int main(int argc, char **argv)
int retval = 0;
struct image_type_params *tparams = NULL;
int pad_len = 0;
+ int dfd;
params.cmdname = *argv;
params.addr = params.ep = 0;
@@ -310,6 +311,22 @@ NXTARG: ;
exit (retval);
}
+ dfd = open(params.datafile, O_RDONLY | O_BINARY);
+ if (dfd < 0) {
+ fprintf(stderr, "%s: Can't open %s: %s\n",
+ params.cmdname, params.datafile, strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+
+ if (fstat(dfd, &sbuf) < 0) {
+ fprintf(stderr, "%s: Can't stat %s: %s\n",
+ params.cmdname, params.datafile, strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+
+ params.file_size = sbuf.st_size + tparams->header_size;
+ close(dfd);
+
/*
* In case there an header with a variable
* length will be added, the corresponding
@@ -409,6 +426,7 @@ NXTARG: ;
params.cmdname, params.imagefile, strerror(errno));
exit (EXIT_FAILURE);
}
+ params.file_size = sbuf.st_size;
ptr = mmap(0, sbuf.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, ifd, 0);
if (ptr == MAP_FAILED) {