|
@@ -70,144 +70,113 @@ static void show_image_types(void)
|
|
|
static void process_args(int argc, char **argv)
|
|
|
{
|
|
|
char *ptr;
|
|
|
-
|
|
|
- while (--argc > 0 && **++argv == '-') {
|
|
|
- while (*++*argv) {
|
|
|
- switch (**argv) {
|
|
|
- case 'l':
|
|
|
- params.lflag = 1;
|
|
|
- break;
|
|
|
- case 'A':
|
|
|
- if ((--argc <= 0) ||
|
|
|
- (params.arch =
|
|
|
- genimg_get_arch_id (*++argv)) < 0)
|
|
|
- usage();
|
|
|
- goto NXTARG;
|
|
|
- case 'c':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.comment = *++argv;
|
|
|
- goto NXTARG;
|
|
|
- case 'C':
|
|
|
- if ((--argc <= 0) ||
|
|
|
- (params.comp =
|
|
|
- genimg_get_comp_id (*++argv)) < 0)
|
|
|
- usage();
|
|
|
- goto NXTARG;
|
|
|
- case 'D':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.dtc = *++argv;
|
|
|
- goto NXTARG;
|
|
|
-
|
|
|
- case 'O':
|
|
|
- if ((--argc <= 0) ||
|
|
|
- (params.os =
|
|
|
- genimg_get_os_id (*++argv)) < 0)
|
|
|
- usage();
|
|
|
- goto NXTARG;
|
|
|
- case 'T':
|
|
|
- params.type = -1;
|
|
|
- if (--argc >= 0 && argv[1]) {
|
|
|
- params.type =
|
|
|
- genimg_get_type_id(*++argv);
|
|
|
- }
|
|
|
- if (params.type < 0) {
|
|
|
- show_image_types();
|
|
|
- usage();
|
|
|
- }
|
|
|
- goto NXTARG;
|
|
|
- case 'a':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.addr = strtoull(*++argv, &ptr, 16);
|
|
|
- if (*ptr) {
|
|
|
- fprintf (stderr,
|
|
|
- "%s: invalid load address %s\n",
|
|
|
- params.cmdname, *argv);
|
|
|
- exit (EXIT_FAILURE);
|
|
|
- }
|
|
|
- goto NXTARG;
|
|
|
- case 'd':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.datafile = *++argv;
|
|
|
- params.dflag = 1;
|
|
|
- goto NXTARG;
|
|
|
- case 'e':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.ep = strtoull(*++argv, &ptr, 16);
|
|
|
- if (*ptr) {
|
|
|
- fprintf (stderr,
|
|
|
- "%s: invalid entry point %s\n",
|
|
|
- params.cmdname, *argv);
|
|
|
- exit (EXIT_FAILURE);
|
|
|
- }
|
|
|
- params.eflag = 1;
|
|
|
- goto NXTARG;
|
|
|
- case 'f':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.datafile = *++argv;
|
|
|
- /* no break */
|
|
|
- case 'F':
|
|
|
- /*
|
|
|
- * The flattened image tree (FIT) format
|
|
|
- * requires a flattened device tree image type
|
|
|
- */
|
|
|
- params.type = IH_TYPE_FLATDT;
|
|
|
- params.fflag = 1;
|
|
|
- goto NXTARG;
|
|
|
- case 'k':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.keydir = *++argv;
|
|
|
- goto NXTARG;
|
|
|
- case 'K':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.keydest = *++argv;
|
|
|
- goto NXTARG;
|
|
|
- case 'n':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- params.imagename = *++argv;
|
|
|
- goto NXTARG;
|
|
|
- case 'r':
|
|
|
- params.require_keys = 1;
|
|
|
- break;
|
|
|
- case 'R':
|
|
|
- if (--argc <= 0)
|
|
|
- usage();
|
|
|
- /*
|
|
|
- * This entry is for the second configuration
|
|
|
- * file, if only one is not enough.
|
|
|
- */
|
|
|
- params.imagename2 = *++argv;
|
|
|
- goto NXTARG;
|
|
|
- case 's':
|
|
|
- params.skipcpy = 1;
|
|
|
- break;
|
|
|
- case 'v':
|
|
|
- params.vflag++;
|
|
|
- break;
|
|
|
- case 'V':
|
|
|
- printf("mkimage version %s\n", PLAIN_VERSION);
|
|
|
- exit(EXIT_SUCCESS);
|
|
|
- case 'x':
|
|
|
- params.xflag++;
|
|
|
- break;
|
|
|
- default:
|
|
|
+ int opt;
|
|
|
+
|
|
|
+ while ((opt = getopt(argc, argv,
|
|
|
+ "a:A:cC:d:D:e:f:Fk:K:ln:O:rR:sT:vVx")) != -1) {
|
|
|
+ switch (opt) {
|
|
|
+ case 'l':
|
|
|
+ params.lflag = 1;
|
|
|
+ break;
|
|
|
+ case 'A':
|
|
|
+ params.arch = genimg_get_arch_id(optarg);
|
|
|
+ if (params.arch < 0)
|
|
|
+ usage();
|
|
|
+ break;
|
|
|
+ case 'c':
|
|
|
+ params.comment = optarg;
|
|
|
+ break;
|
|
|
+ case 'C':
|
|
|
+ params.comp = genimg_get_comp_id(optarg);
|
|
|
+ if (params.comp < 0)
|
|
|
+ usage();
|
|
|
+ break;
|
|
|
+ case 'D':
|
|
|
+ params.dtc = optarg;
|
|
|
+ break;
|
|
|
+ case 'O':
|
|
|
+ params.os = genimg_get_os_id(optarg);
|
|
|
+ if (params.os < 0)
|
|
|
+ usage();
|
|
|
+ break;
|
|
|
+ case 'T':
|
|
|
+ params.type = genimg_get_type_id(optarg);
|
|
|
+ if (params.type < 0) {
|
|
|
+ show_image_types();
|
|
|
usage();
|
|
|
}
|
|
|
+ break;
|
|
|
+ case 'a':
|
|
|
+ params.addr = strtoull(optarg, &ptr, 16);
|
|
|
+ if (*ptr) {
|
|
|
+ fprintf(stderr, "%s: invalid load address %s\n",
|
|
|
+ params.cmdname, optarg);
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'd':
|
|
|
+ params.datafile = optarg;
|
|
|
+ params.dflag = 1;
|
|
|
+ break;
|
|
|
+ case 'e':
|
|
|
+ params.ep = strtoull(optarg, &ptr, 16);
|
|
|
+ if (*ptr) {
|
|
|
+ fprintf(stderr, "%s: invalid entry point %s\n",
|
|
|
+ params.cmdname, optarg);
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
+ }
|
|
|
+ params.eflag = 1;
|
|
|
+ break;
|
|
|
+ case 'f':
|
|
|
+ params.datafile = optarg;
|
|
|
+ /* no break */
|
|
|
+ case 'F':
|
|
|
+ /*
|
|
|
+ * The flattened image tree (FIT) format
|
|
|
+ * requires a flattened device tree image type
|
|
|
+ */
|
|
|
+ params.type = IH_TYPE_FLATDT;
|
|
|
+ params.fflag = 1;
|
|
|
+ break;
|
|
|
+ case 'k':
|
|
|
+ params.keydir = optarg;
|
|
|
+ break;
|
|
|
+ case 'K':
|
|
|
+ params.keydest = optarg;
|
|
|
+ break;
|
|
|
+ case 'n':
|
|
|
+ params.imagename = optarg;
|
|
|
+ break;
|
|
|
+ case 'r':
|
|
|
+ params.require_keys = 1;
|
|
|
+ break;
|
|
|
+ case 'R':
|
|
|
+ /*
|
|
|
+ * This entry is for the second configuration
|
|
|
+ * file, if only one is not enough.
|
|
|
+ */
|
|
|
+ params.imagename2 = optarg;
|
|
|
+ break;
|
|
|
+ case 's':
|
|
|
+ params.skipcpy = 1;
|
|
|
+ break;
|
|
|
+ case 'v':
|
|
|
+ params.vflag++;
|
|
|
+ break;
|
|
|
+ case 'V':
|
|
|
+ printf("mkimage version %s\n", PLAIN_VERSION);
|
|
|
+ exit(EXIT_SUCCESS);
|
|
|
+ case 'x':
|
|
|
+ params.xflag++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ usage();
|
|
|
}
|
|
|
-NXTARG: ;
|
|
|
}
|
|
|
|
|
|
- if (argc != 1)
|
|
|
+ if (optind >= argc)
|
|
|
usage();
|
|
|
- params.imagefile = *argv;
|
|
|
+ params.imagefile = argv[optind];
|
|
|
}
|
|
|
|
|
|
|