diff options
| author | Frans Meulenbroeks <fransmeulenbroeks@gmail.com> | 2010-03-27 11:16:10 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-04-09 23:37:06 +0200 | 
| commit | 9acd4f0e914913796e4e56f550726d216f7b16e5 (patch) | |
| tree | 3a8fa8d42bfc44085a67dd77a58badb4ddb2904f /common/cmd_bmp.c | |
| parent | f852a0c3bfe0b30b4816135b9a0d2aaae7e5de6a (diff) | |
| download | olio-uboot-2014.01-9acd4f0e914913796e4e56f550726d216f7b16e5.tar.xz olio-uboot-2014.01-9acd4f0e914913796e4e56f550726d216f7b16e5.zip | |
cmd_bmp.c: add standard subcommand handling
Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Acked-by: Detlev Zundel <dzu@denx.de>
Diffstat (limited to 'common/cmd_bmp.c')
| -rw-r--r-- | common/cmd_bmp.c | 81 | 
1 files changed, 56 insertions, 25 deletions
| diff --git a/common/cmd_bmp.c b/common/cmd_bmp.c index 74ab24ca9..583b0090c 100644 --- a/common/cmd_bmp.c +++ b/common/cmd_bmp.c @@ -90,46 +90,77 @@ bmp_image_t *gunzip_bmp(unsigned long addr, unsigned long *lenp)  }  #endif +static int do_bmp_info(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +{ +	ulong addr; -/* - * Subroutine:  do_bmp - * - * Description: Handler for 'bmp' command.. - * - * Inputs:	argv[1] contains the subcommand - * - * Return:      None - * - */ -int do_bmp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +	switch (argc) { +	case 1:		/* use load_addr as default address */ +		addr = load_addr; +		break; +	case 2:		/* use argument */ +		addr = simple_strtoul(argv[1], NULL, 16); +		break; +	default: +		cmd_usage(cmdtp); +		return 1; +	} + +	return (bmp_info(addr)); +} + +static int do_bmp_display(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  {  	ulong addr;  	int x = 0, y = 0;  	switch (argc) { -	case 2:		/* use load_addr as default address */ +	case 1:		/* use load_addr as default address */  		addr = load_addr;  		break; -	case 3:		/* use argument */ -		addr = simple_strtoul(argv[2], NULL, 16); +	case 2:		/* use argument */ +		addr = simple_strtoul(argv[1], NULL, 16);  		break; -	case 5: -		addr = simple_strtoul(argv[2], NULL, 16); -	        x = simple_strtoul(argv[3], NULL, 10); -	        y = simple_strtoul(argv[4], NULL, 10); +	case 4: +		addr = simple_strtoul(argv[1], NULL, 16); +	        x = simple_strtoul(argv[2], NULL, 10); +	        y = simple_strtoul(argv[3], NULL, 10);  	        break;  	default:  		cmd_usage(cmdtp);  		return 1;  	} -	/* Allow for short names -	 * Adjust length if more sub-commands get added -	 */ -	if (strncmp(argv[1],"info",1) == 0) { -		return (bmp_info(addr)); -	} else if (strncmp(argv[1],"display",1) == 0) { -	    return (bmp_display(addr, x, y)); +	 return (bmp_display(addr, x, y)); +} + +static cmd_tbl_t cmd_bmp_sub[] = { +	U_BOOT_CMD_MKENT(info, 3, 0, do_bmp_info, "", ""), +	U_BOOT_CMD_MKENT(display, 5, 0, do_bmp_display, "", ""), +}; + +/* + * Subroutine:  do_bmp + * + * Description: Handler for 'bmp' command.. + * + * Inputs:	argv[1] contains the subcommand + * + * Return:      None + * + */ +static int do_bmp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	cmd_tbl_t *c; + +	/* Strip off leading 'bmp' command argument */ +	argc--; +	argv++; + +	c = find_cmd_tbl(argv[0], &cmd_bmp_sub[0], ARRAY_SIZE(cmd_bmp_sub)); + +	if (c) { +		return  c->cmd(cmdtp, flag, argc, argv);  	} else {  		cmd_usage(cmdtp);  		return 1; |