mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 07:04:28 +00:00
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>
This commit is contained in:
parent
0ca6691c2e
commit
067d156075
4 changed files with 46 additions and 28 deletions
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue