command.c: Expose the core of do_help as _do_help to the rest of u-boot.
authorDetlev Zundel <dzu@denx.de>
Wed, 25 Mar 2009 16:27:52 +0000 (17:27 +0100)
committerWolfgang Denk <wd@denx.de>
Fri, 27 Mar 2009 20:06:30 +0000 (21:06 +0100)
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>
common/command.c
include/command.h

index 3b9ccc9ed086e70e7f1cc375058810dfb7b5179f..c9a3f5bf6b51342a4972b36d66b4ad90030f9076 100644 (file)
@@ -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,
index d7321af92bcfe02c570d0f9096e7fa6dee03ce41..bd478539250415aff2828ee432bd914d167616d6 100644 (file)
@@ -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);