Expose command table search for sub-commands
Sub-command can benefit from using the same table and search functions that top level commands have. Expose this functionality by refactoring find_cmd() and introducing find_cmd_tbl() that sub-command processing can call. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
		
							parent
							
								
									f7e51b2750
								
							
						
					
					
						commit
						b799cb4c0e
					
				|  | @ -341,10 +341,10 @@ cmd_tbl_t __u_boot_cmd_question_mark Struct_Section = { | ||||||
| /***************************************************************************
 | /***************************************************************************
 | ||||||
|  * find command table entry for a command |  * find command table entry for a command | ||||||
|  */ |  */ | ||||||
| cmd_tbl_t *find_cmd (const char *cmd) | cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len) | ||||||
| { | { | ||||||
| 	cmd_tbl_t *cmdtp; | 	cmd_tbl_t *cmdtp; | ||||||
| 	cmd_tbl_t *cmdtp_temp = &__u_boot_cmd_start;	/*Init value */ | 	cmd_tbl_t *cmdtp_temp = table;	/*Init value */ | ||||||
| 	const char *p; | 	const char *p; | ||||||
| 	int len; | 	int len; | ||||||
| 	int n_found = 0; | 	int n_found = 0; | ||||||
|  | @ -355,8 +355,8 @@ cmd_tbl_t *find_cmd (const char *cmd) | ||||||
| 	 */ | 	 */ | ||||||
| 	len = ((p = strchr(cmd, '.')) == NULL) ? strlen (cmd) : (p - cmd); | 	len = ((p = strchr(cmd, '.')) == NULL) ? strlen (cmd) : (p - cmd); | ||||||
| 
 | 
 | ||||||
| 	for (cmdtp = &__u_boot_cmd_start; | 	for (cmdtp = table; | ||||||
| 	     cmdtp != &__u_boot_cmd_end; | 	     cmdtp != table + table_len; | ||||||
| 	     cmdtp++) { | 	     cmdtp++) { | ||||||
| 		if (strncmp (cmd, cmdtp->name, len) == 0) { | 		if (strncmp (cmd, cmdtp->name, len) == 0) { | ||||||
| 			if (len == strlen (cmdtp->name)) | 			if (len == strlen (cmdtp->name)) | ||||||
|  | @ -373,6 +373,12 @@ cmd_tbl_t *find_cmd (const char *cmd) | ||||||
| 	return NULL;	/* not found or ambiguous command */ | 	return NULL;	/* not found or ambiguous command */ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | cmd_tbl_t *find_cmd (const char *cmd) | ||||||
|  | { | ||||||
|  | 	int len = &__u_boot_cmd_end - &__u_boot_cmd_start; | ||||||
|  | 	return find_cmd_tbl(cmd, &__u_boot_cmd_start, len); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #ifdef CONFIG_AUTO_COMPLETE | #ifdef CONFIG_AUTO_COMPLETE | ||||||
| 
 | 
 | ||||||
| int var_complete(int argc, char *argv[], char last_char, int maxv, char *cmdv[]) | int var_complete(int argc, char *argv[], char last_char, int maxv, char *cmdv[]) | ||||||
|  |  | ||||||
|  | @ -62,6 +62,7 @@ extern cmd_tbl_t  __u_boot_cmd_end; | ||||||
| 
 | 
 | ||||||
| /* common/command.c */ | /* common/command.c */ | ||||||
| cmd_tbl_t *find_cmd(const char *cmd); | cmd_tbl_t *find_cmd(const char *cmd); | ||||||
|  | cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len); | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_AUTO_COMPLETE | #ifdef CONFIG_AUTO_COMPLETE | ||||||
| extern void install_auto_complete(void); | extern void install_auto_complete(void); | ||||||
|  | @ -102,11 +103,17 @@ extern int cmd_get_data_size(char* arg, int default_size); | ||||||
| #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \ | #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \ | ||||||
| cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help} | cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage, help} | ||||||
| 
 | 
 | ||||||
|  | #define U_BOOT_CMD_MKENT(name,maxargs,rep,cmd,usage,help) \ | ||||||
|  | {#name, maxargs, rep, cmd, usage, help} | ||||||
|  | 
 | ||||||
| #else	/* no long help info */ | #else	/* no long help info */ | ||||||
| 
 | 
 | ||||||
| #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \ | #define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \ | ||||||
| cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage} | cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage} | ||||||
| 
 | 
 | ||||||
|  | #define U_BOOT_CMD_MKENT(name,maxargs,rep,cmd,usage,help) \ | ||||||
|  | {#name, maxargs, rep, cmd, usage} | ||||||
|  | 
 | ||||||
| #endif	/* CFG_LONGHELP */ | #endif	/* CFG_LONGHELP */ | ||||||
| 
 | 
 | ||||||
| #endif	/* __COMMAND_H */ | #endif	/* __COMMAND_H */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue