From 067d15607598884e270f3076c721f56d3c4f65e6 Mon Sep 17 00:00:00 2001 From: Guilherme Maciel Ferreira Date: Thu, 15 Jan 2015 02:48:06 -0200 Subject: imagetool: make the image_save_datafile() available to all image types Move the image_save_datafile() function from an U-Multi specific file (default_image.c) to a file common to all image types (image.c). And rename it to genimg_save_datafile(), to make clear it is useful for any image type. Signed-off-by: Guilherme Maciel Ferreira --- common/image.c | 2 +- tools/default_image.c | 28 +--------------------------- tools/imagetool.c | 27 +++++++++++++++++++++++++++ tools/imagetool.h | 17 +++++++++++++++++ 4 files changed, 46 insertions(+), 28 deletions(-) diff --git a/common/image.c b/common/image.c index ad7a46d08d..a911aa9b4d 100644 --- a/common/image.c +++ b/common/image.c @@ -756,7 +756,7 @@ int genimg_get_format(const void *img_addr) * genimg_get_image - get image from special storage (if necessary) * @img_addr: image start address * - * genimg_get_image() checks if provided image start adddress is located + * genimg_get_image() checks if provided image start address is located * in a dataflash storage. If so, image is moved to a system RAM memory. * * returns: diff --git a/tools/default_image.c b/tools/default_image.c index 0a0792e503..a92fa8015b 100644 --- a/tools/default_image.c +++ b/tools/default_image.c @@ -117,32 +117,6 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd, image_set_hcrc(hdr, checksum); } -static int image_save_datafile(struct image_tool_params *params, - ulong file_data, ulong file_len) -{ - int dfd; - const char *datafile = params->outfile; - - dfd = open(datafile, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, - S_IRUSR | S_IWUSR); - if (dfd < 0) { - fprintf(stderr, "%s: Can't open \"%s\": %s\n", - params->cmdname, datafile, strerror(errno)); - return -1; - } - - if (write(dfd, (void *)file_data, file_len) != (ssize_t)file_len) { - fprintf(stderr, "%s: Write error on \"%s\": %s\n", - params->cmdname, datafile, strerror(errno)); - close(dfd); - return -1; - } - - close(dfd); - - return 0; -} - static int image_extract_datafile(void *ptr, struct image_tool_params *params) { const image_header_t *hdr = (const image_header_t *)ptr; @@ -170,7 +144,7 @@ static int image_extract_datafile(void *ptr, struct image_tool_params *params) } /* save the "data file" into the file system */ - return image_save_datafile(params, file_data, file_len); + return imagetool_save_datafile(params->outfile, file_data, file_len); } /* diff --git a/tools/imagetool.c b/tools/imagetool.c index e4de7af984..a25b86b36e 100644 --- a/tools/imagetool.c +++ b/tools/imagetool.c @@ -113,3 +113,30 @@ int imagetool_verify_print_header( return retval; } + +int imagetool_save_datafile( + const char *file_name, + ulong file_data, + ulong file_len) +{ + int dfd; + + dfd = open(file_name, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, + S_IRUSR | S_IWUSR); + if (dfd < 0) { + fprintf(stderr, "Can't open \"%s\": %s\n", + file_name, strerror(errno)); + return -1; + } + + if (write(dfd, (void *)file_data, file_len) != (ssize_t)file_len) { + fprintf(stderr, "Write error on \"%s\": %s\n", + file_name, strerror(errno)); + close(dfd); + return -1; + } + + close(dfd); + + return 0; +} diff --git a/tools/imagetool.h b/tools/imagetool.h index eb2750cf69..44d9380995 100644 --- a/tools/imagetool.h +++ b/tools/imagetool.h @@ -181,6 +181,23 @@ int imagetool_verify_print_header( struct image_type_params *tparams, struct image_tool_params *params); +/** + * imagetool_save_datafile - store data into a file + * @file_name: name of the destination file + * @file_data: data to be written + * @file_len: the amount of data to store + * + * imagetool_save_datafile() store file_len bytes of data pointed by file_data + * into the file name by file_name. + * + * returns: + * zero in case of success or a negative value if fail. + */ +int imagetool_save_datafile( + const char *file_name, + ulong file_data, + ulong file_len); + /* * There is a c file associated with supported image type low level code * for ex. default_image.c, fit_image.c -- cgit v1.2.1