mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 13:56:20 +00:00
command: Introduce functions to obtain command arguments
Add some functions which provide an argument to a command, or NULL if the argument does not exist. Use the same numbering as argv[] since it seems less confusing than the previous idea. Signed-off-by: Simon Glass <sjg@chromium.org> Suggested-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
1047b5340c
commit
8632b36b96
10 changed files with 49 additions and 16 deletions
|
@ -1014,8 +1014,8 @@ int do_bootm_states(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
ulong img_addr;
|
ulong img_addr;
|
||||||
|
|
||||||
img_addr = argc ? hextoul(argv[0], NULL) : image_load_addr;
|
img_addr = argc ? hextoul(argv[0], NULL) : image_load_addr;
|
||||||
ret = bootm_find_other(img_addr, argc > 1 ? argv[1] : NULL,
|
ret = bootm_find_other(img_addr, cmd_arg1(argc, argv),
|
||||||
argc > 2 ? argv[2] : NULL);
|
cmd_arg2(argc, argv));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_MEASURED_BOOT) && !ret &&
|
if (IS_ENABLED(CONFIG_MEASURED_BOOT) && !ret &&
|
||||||
|
|
|
@ -95,8 +95,8 @@ static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
* Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
|
* Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
|
||||||
* have a header that provide this informaiton.
|
* have a header that provide this informaiton.
|
||||||
*/
|
*/
|
||||||
if (bootm_find_images(image_load_addr, argc > 1 ? argv[1] : NULL,
|
if (bootm_find_images(image_load_addr, cmd_arg1(argc, argv),
|
||||||
argc > 2 ? argv[2] : NULL, relocated_addr,
|
cmd_arg2(argc, argv), relocated_addr,
|
||||||
image_size))
|
image_size))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
|
@ -54,8 +54,8 @@ static int bootz_start(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
* Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
|
* Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
|
||||||
* have a header that provide this informaiton.
|
* have a header that provide this informaiton.
|
||||||
*/
|
*/
|
||||||
if (bootm_find_images(image_load_addr, argc > 1 ? argv[1] : NULL,
|
if (bootm_find_images(image_load_addr, cmd_arg1(argc, argv),
|
||||||
argc > 2 ? argv[2] : NULL, images->ep,
|
cmd_arg2(argc, argv), images->ep,
|
||||||
zi_end - zi_start))
|
zi_end - zi_start))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ int common_diskboot(struct cmd_tbl *cmdtp, const char *intf, int argc,
|
||||||
|
|
||||||
bootstage_mark(BOOTSTAGE_ID_IDE_BOOT_DEVICE);
|
bootstage_mark(BOOTSTAGE_ID_IDE_BOOT_DEVICE);
|
||||||
|
|
||||||
part = blk_get_device_part_str(intf, (argc == 3) ? argv[2] : NULL,
|
part = blk_get_device_part_str(intf, cmd_arg2(argc, argv),
|
||||||
&dev_desc, &info, 1);
|
&dev_desc, &info, 1);
|
||||||
if (part < 0) {
|
if (part < 0) {
|
||||||
bootstage_error(BOOTSTAGE_ID_IDE_TYPE);
|
bootstage_error(BOOTSTAGE_ID_IDE_TYPE);
|
||||||
|
|
|
@ -44,7 +44,7 @@ static int confirm_prog(void)
|
||||||
static int do_fuse(struct cmd_tbl *cmdtp, int flag, int argc,
|
static int do_fuse(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
char *const argv[])
|
char *const argv[])
|
||||||
{
|
{
|
||||||
const char *op = argc >= 2 ? argv[1] : NULL;
|
const char *op = cmd_arg1(argc, argv);
|
||||||
int confirmed = argc >= 3 && !strcmp(argv[2], "-y");
|
int confirmed = argc >= 3 && !strcmp(argv[2], "-y");
|
||||||
u32 bank, word, cnt, val, cmp;
|
u32 bank, word, cnt, val, cmp;
|
||||||
ulong addr;
|
ulong addr;
|
||||||
|
|
|
@ -946,7 +946,7 @@ static int do_mmc_partconf(struct cmd_tbl *cmdtp, int flag,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc == 2 || argc == 3)
|
if (argc == 2 || argc == 3)
|
||||||
return mmc_partconf_print(mmc, argc == 3 ? argv[2] : NULL);
|
return mmc_partconf_print(mmc, cmd_arg2(argc, argv));
|
||||||
|
|
||||||
ack = dectoul(argv[2], NULL);
|
ack = dectoul(argv[2], NULL);
|
||||||
part_num = dectoul(argv[3], NULL);
|
part_num = dectoul(argv[3], NULL);
|
||||||
|
|
|
@ -531,10 +531,10 @@ static int do_gsc(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]
|
||||||
if (!gsc_wd_disable(dev))
|
if (!gsc_wd_disable(dev))
|
||||||
return CMD_RET_SUCCESS;
|
return CMD_RET_SUCCESS;
|
||||||
} else if (strcasecmp(argv[1], "thermal") == 0) {
|
} else if (strcasecmp(argv[1], "thermal") == 0) {
|
||||||
char *cmd, *val;
|
const char *cmd, *val;
|
||||||
|
|
||||||
cmd = (argc > 2) ? argv[2] : NULL;
|
cmd = cmd_arg2(argc, argv);
|
||||||
val = (argc > 3) ? argv[3] : NULL;
|
val = cmd_arg3(argc, argv);
|
||||||
if (!gsc_thermal(dev, cmd, val))
|
if (!gsc_thermal(dev, cmd, val))
|
||||||
return CMD_RET_SUCCESS;
|
return CMD_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
4
fs/fs.c
4
fs/fs.c
|
@ -749,7 +749,7 @@ int do_load(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
|
||||||
if (argc > 7)
|
if (argc > 7)
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
|
|
||||||
if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype)) {
|
if (fs_set_blk_dev(argv[1], cmd_arg2(argc, argv), fstype)) {
|
||||||
log_err("Can't set block device\n");
|
log_err("Can't set block device\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -818,7 +818,7 @@ int do_ls(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[],
|
||||||
if (argc > 4)
|
if (argc > 4)
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
|
|
||||||
if (fs_set_blk_dev(argv[1], (argc >= 3) ? argv[2] : NULL, fstype))
|
if (fs_set_blk_dev(argv[1], cmd_arg2(argc, argv), fstype))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (fs_ls(argc >= 4 ? argv[3] : "/"))
|
if (fs_ls(argc >= 4 ? argv[3] : "/"))
|
||||||
|
|
|
@ -60,6 +60,39 @@ struct cmd_tbl {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cmd_arg_get() - Get a particular argument
|
||||||
|
*
|
||||||
|
* @argc: Number of arguments
|
||||||
|
* @argv: Argument vector of length @argc
|
||||||
|
* @argnum: Argument to get (0=first)
|
||||||
|
* Return: Pointer to argument @argnum if it exists, else NULL
|
||||||
|
*/
|
||||||
|
static inline const char *cmd_arg_get(int argc, char *const argv[], int argnum)
|
||||||
|
{
|
||||||
|
return argc > argnum ? argv[argnum] : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline const char *cmd_arg0(int argc, char *const argv[])
|
||||||
|
{
|
||||||
|
return cmd_arg_get(argc, argv, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline const char *cmd_arg1(int argc, char *const argv[])
|
||||||
|
{
|
||||||
|
return cmd_arg_get(argc, argv, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline const char *cmd_arg2(int argc, char *const argv[])
|
||||||
|
{
|
||||||
|
return cmd_arg_get(argc, argv, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline const char *cmd_arg3(int argc, char *const argv[])
|
||||||
|
{
|
||||||
|
return cmd_arg_get(argc, argv, 3);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_RUN)
|
#if defined(CONFIG_CMD_RUN)
|
||||||
int do_run(struct cmd_tbl *cmdtp, int flag, int argc,
|
int do_run(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
char *const argv[]);
|
char *const argv[]);
|
||||||
|
|
|
@ -45,7 +45,7 @@ int cmd_ut_category(const char *name, const char *prefix,
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ut_run_list(name, prefix, tests, n_ents,
|
ret = ut_run_list(name, prefix, tests, n_ents,
|
||||||
argc > 1 ? argv[1] : NULL, runs_per_text, force_run,
|
cmd_arg1(argc, argv), runs_per_text, force_run,
|
||||||
test_insert);
|
test_insert);
|
||||||
|
|
||||||
return ret ? CMD_RET_FAILURE : 0;
|
return ret ? CMD_RET_FAILURE : 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue