1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 00:32:04 +02:00

mkimage: fix argument parsing on BSD systems

The getopt(3) optstring '-' is a GNU extension which is not available on BSD
systems like OS X.

Remove this dependency by implementing argument parsing in another way. This
will also change the lately introduced '-b' switch behaviour.

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Andreas Bießmann
2016-05-01 03:01:27 +02:00
committed by Tom Rini
parent f1ab00fb53
commit 7a439cadcf
3 changed files with 16 additions and 25 deletions

View File

@@ -85,8 +85,8 @@ static void usage(const char *msg)
" -x ==> set XIP (execute in place)\n",
params.cmdname);
fprintf(stderr,
" %s [-D dtc_options] [-f fit-image.its|-f auto|-F] [-b <dtb_list>] fit-image\n"
" <dtb_list> is used with -f auto, and is a space-separated list of .dtb files\n",
" %s [-D dtc_options] [-f fit-image.its|-f auto|-F] [-b <dtb> [-b <dtb>]] fit-image\n"
" <dtb> file is used with -f auto, it may occour multiple times.\n",
params.cmdname);
fprintf(stderr,
" -D => set all options for device tree compiler\n"
@@ -138,7 +138,7 @@ static void process_args(int argc, char **argv)
expecting = IH_TYPE_COUNT; /* Unknown */
while ((opt = getopt(argc, argv,
"-a:A:bcC:d:D:e:Ef:Fk:K:ln:O:rR:sT:vVx")) != -1) {
"a:A:b:cC:d:D:e:Ef:Fk:K:ln:O:rR:sT:vVx")) != -1) {
switch (opt) {
case 'a':
params.addr = strtoull(optarg, &ptr, 16);
@@ -155,6 +155,12 @@ static void process_args(int argc, char **argv)
break;
case 'b':
expecting = IH_TYPE_FLATDT;
if (add_content(expecting, optarg)) {
fprintf(stderr,
"%s: Out of memory adding content '%s'",
params.cmdname, optarg);
exit(EXIT_FAILURE);
}
break;
case 'c':
params.comment = optarg;
@@ -243,29 +249,14 @@ static void process_args(int argc, char **argv)
case 'x':
params.xflag++;
break;
case 1:
if (expecting == type || optind == argc) {
params.imagefile = optarg;
expecting = IH_TYPE_INVALID;
} else if (expecting == IH_TYPE_INVALID) {
fprintf(stderr,
"%s: Unknown content type: use -b before device tree files",
params.cmdname);
exit(EXIT_FAILURE);
} else {
if (add_content(expecting, optarg)) {
fprintf(stderr,
"%s: Out of memory adding content '%s'",
params.cmdname, optarg);
exit(EXIT_FAILURE);
}
}
break;
default:
usage("Invalid option");
}
}
if (optind < argc && expecting == type)
params.imagefile = argv[optind];
/*
* For auto-generated FIT images we need to know the image type to put
* in the FIT, which is separate from the file's image type (which