diff options
author | Detlev Zundel <dzu@denx.de> | 2009-03-25 17:27:52 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2009-03-27 21:06:30 +0100 |
commit | 2dce551e10728f9e5655279f761f1d3cc0a8fe90 (patch) | |
tree | 981e2c3efa07a2058fa98b745243a230ba1f15e5 | |
parent | 4e325fbfa4dea04eceb6392e00807c40d214dc6f (diff) | |
download | u-boot-imx-2dce551e10728f9e5655279f761f1d3cc0a8fe90.zip u-boot-imx-2dce551e10728f9e5655279f761f1d3cc0a8fe90.tar.gz u-boot-imx-2dce551e10728f9e5655279f761f1d3cc0a8fe90.tar.bz2 |
command.c: Expose the core of do_help as _do_help to the rest of u-boot.
Other commands implementing subcommands can reuse this code nicely.
Signed-off-by: Detlev Zundel <dzu@denx.de>
Signed-off-by: Andreas Pfefferle <ap@denx.de>
-rw-r--r-- | common/command.c | 20 | ||||
-rw-r--r-- | include/command.h | 4 |
2 files changed, 16 insertions, 8 deletions
diff --git a/common/command.c b/common/command.c index 3b9ccc9..c9a3f5b 100644 --- a/common/command.c +++ b/common/command.c @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000-2003 + * (C) Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -233,20 +233,19 @@ U_BOOT_CMD( * Use puts() instead of printf() to avoid printf buffer overflow * for long help messages */ -int do_help (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) + +int _do_help (cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp, int + flag, int argc, char *argv[]) { int i; int rcode = 0; if (argc == 1) { /*show list of commands */ - - int cmd_items = &__u_boot_cmd_end - - &__u_boot_cmd_start; /* pointer arith! */ cmd_tbl_t *cmd_array[cmd_items]; int i, j, swaps; /* Make array of commands from .uboot_cmd section */ - cmdtp = &__u_boot_cmd_start; + cmdtp = cmd_start; for (i = 0; i < cmd_items; i++) { cmd_array[i] = cmdtp++; } @@ -286,7 +285,7 @@ int do_help (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) * command help (long version) */ for (i = 1; i < argc; ++i) { - if ((cmdtp = find_cmd (argv[i])) != NULL) { + if ((cmdtp = find_cmd_tbl (argv[i], cmd_start, cmd_items )) != NULL) { #ifdef CONFIG_SYS_LONGHELP /* found - print (long) help info */ puts (cmdtp->name); @@ -313,6 +312,13 @@ int do_help (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) return rcode; } +int do_help (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +{ + return _do_help(&__u_boot_cmd_start, + &__u_boot_cmd_end - &__u_boot_cmd_start, + cmdtp, flag, argc, argv); +} + U_BOOT_CMD( help, CONFIG_SYS_MAXARGS, 1, do_help, diff --git a/include/command.h b/include/command.h index d7321af..bd47853 100644 --- a/include/command.h +++ b/include/command.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000 + * (C) Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -66,6 +66,8 @@ extern cmd_tbl_t __u_boot_cmd_end; /* common/command.c */ +int _do_help (cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp, int + flag, int argc, char *argv[]); cmd_tbl_t *find_cmd(const char *cmd); cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len); |