aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorGuilherme Maciel Ferreira2015-01-15 02:48:06 -0200
committerTom Rini2015-01-29 13:38:41 -0500
commit067d15607598884e270f3076c721f56d3c4f65e6 (patch)
tree06f5767d8a717e895179d0209cc32ab1af2fb7e1 /tools
parent0ca6691c2ec20ff264d882854c339795579991f5 (diff)
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 <guilherme.maciel.ferreira@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/default_image.c28
-rw-r--r--tools/imagetool.c27
-rw-r--r--tools/imagetool.h17
3 files changed, 45 insertions, 27 deletions
diff --git a/tools/default_image.c b/tools/default_image.c
index 0a0792e503e..a92fa8015b1 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 e4de7af9845..a25b86b36eb 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 eb2750cf69e..44d9380995b 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