From 92a655c326b22de58dcd5371ca1a62fdc57f8e04 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 23 Jun 2015 15:39:12 -0600 Subject: 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 Acked-by: Joe Hershberger --- tools/mkimage.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tools/mkimage.c') diff --git a/tools/mkimage.c b/tools/mkimage.c index 8808d70444..e81d455083 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) { -- cgit v1.2.1