Re: [U-Boot] [PATCH 3/4] Support run-time disabling of u-boot commands.

Dear Josh Karabin,
In message <2d0c4b7840d573c666484662662fbb953f59cfba.1243367498.git.gkarabi n@vocollect.com> you wrote:
Change the command parsing code to ignore command table entries with NULL names. This makes it possible to disable a command (say, for a supported but not connected memory) at run time.
Signed-off-by: Josh Karabin gkarabin@vocollect.com
common/command.c | 43 +++++++++++++++++++++++++------------------ 1 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/common/command.c b/common/command.c index c9a3f5b..ef2cbfc 100644 --- a/common/command.c +++ b/common/command.c @@ -243,15 +243,19 @@ int _do_help (cmd_tbl_t *cmd_start, int cmd_items, cmd_tbl_t * cmdtp, int if (argc == 1) { /*show list of commands */ cmd_tbl_t *cmd_array[cmd_items]; int i, j, swaps;
int cmd_array_items;
I think cmd_array_items can be avoided.
/* Make array of commands from .uboot_cmd section */ cmdtp = cmd_start;
for (i = 0; i < cmd_items; i++) {
cmd_array[i] = cmdtp++;
for (i = 0, cmd_array_items = 0; i < cmd_items; i++) {
if (cmdtp->name) {
cmd_array[i] = cmdtp++;
cmd_array_items++;
}}
I don't think this is needed. You will not have any NULL entries in the .uboot_cmd section.
@@ -483,20 +488,22 @@ static int complete_cmdv(int argc, char *argv[], char last_char, int maxv, char /* return the partial matches */ for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) {
clen = strlen(cmdtp->name);
if (clen < len)
continue;
if (cmdtp->name) {
clen = strlen(cmdtp->name);
if (clen < len)
continue;
Change the logic here. Instead of adding yet another indentation level write:
if (!cmdtp->name)) continue;
Best regards,
Wolfgang Denk
participants (1)
-
Wolfgang Denk