mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09:00
mkimage: Fix variable length header support
Support for variable length images like AIS image was introduced
in commit f0662105b6
. A parameter
"-s" was also introduced to prohibit copying of the image file
automatically in the main program. However, this parameter
was implemented incorrectly and the image file was copied
nevertheless.
Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Acked-by: Stefano Babic <sbabic@denx.de>
This commit is contained in:
parent
3d2c8e6c7f
commit
d1be8f922e
|
@ -383,65 +383,66 @@ NXTARG: ;
|
|||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (!params.skipcpy &&
|
||||
(params.type == IH_TYPE_MULTI ||
|
||||
params.type == IH_TYPE_SCRIPT)) {
|
||||
char *file = params.datafile;
|
||||
uint32_t size;
|
||||
if (!params.skipcpy) {
|
||||
if (params.type == IH_TYPE_MULTI ||
|
||||
params.type == IH_TYPE_SCRIPT) {
|
||||
char *file = params.datafile;
|
||||
uint32_t size;
|
||||
|
||||
for (;;) {
|
||||
char *sep = NULL;
|
||||
for (;;) {
|
||||
char *sep = NULL;
|
||||
|
||||
if (file) {
|
||||
if ((sep = strchr(file, ':')) != NULL) {
|
||||
*sep = '\0';
|
||||
if (file) {
|
||||
if ((sep = strchr(file, ':')) != NULL) {
|
||||
*sep = '\0';
|
||||
}
|
||||
|
||||
if (stat (file, &sbuf) < 0) {
|
||||
fprintf (stderr, "%s: Can't stat %s: %s\n",
|
||||
params.cmdname, file, strerror(errno));
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
size = cpu_to_uimage (sbuf.st_size);
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
if (stat (file, &sbuf) < 0) {
|
||||
fprintf (stderr, "%s: Can't stat %s: %s\n",
|
||||
params.cmdname, file, strerror(errno));
|
||||
if (write(ifd, (char *)&size, sizeof(size)) != sizeof(size)) {
|
||||
fprintf (stderr, "%s: Write error on %s: %s\n",
|
||||
params.cmdname, params.imagefile,
|
||||
strerror(errno));
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
size = cpu_to_uimage (sbuf.st_size);
|
||||
} else {
|
||||
size = 0;
|
||||
|
||||
if (!file) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (sep) {
|
||||
*sep = ':';
|
||||
file = sep + 1;
|
||||
} else {
|
||||
file = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (write(ifd, (char *)&size, sizeof(size)) != sizeof(size)) {
|
||||
fprintf (stderr, "%s: Write error on %s: %s\n",
|
||||
params.cmdname, params.imagefile,
|
||||
strerror(errno));
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
file = params.datafile;
|
||||
|
||||
if (!file) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (sep) {
|
||||
*sep = ':';
|
||||
file = sep + 1;
|
||||
} else {
|
||||
file = NULL;
|
||||
for (;;) {
|
||||
char *sep = strchr(file, ':');
|
||||
if (sep) {
|
||||
*sep = '\0';
|
||||
copy_file (ifd, file, 1);
|
||||
*sep++ = ':';
|
||||
file = sep;
|
||||
} else {
|
||||
copy_file (ifd, file, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
copy_file (ifd, params.datafile, 0);
|
||||
}
|
||||
|
||||
file = params.datafile;
|
||||
|
||||
for (;;) {
|
||||
char *sep = strchr(file, ':');
|
||||
if (sep) {
|
||||
*sep = '\0';
|
||||
copy_file (ifd, file, 1);
|
||||
*sep++ = ':';
|
||||
file = sep;
|
||||
} else {
|
||||
copy_file (ifd, file, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
copy_file (ifd, params.datafile, 0);
|
||||
}
|
||||
|
||||
/* We're a bit of paranoid */
|
||||
|
|
Loading…
Reference in New Issue
Block a user