mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01: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:
		| @@ -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,8 +40,8 @@ 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); | ||||||
| 		return 1; | 		return 1; | ||||||
|   | |||||||
| @@ -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; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user