]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/hush.c
cmd_usage(): simplify return code handling
[karo-tx-uboot.git] / common / hush.c
index 9aef6e41dbfdbec4a6b3be491db09cd3744c6068..4dd9513b0365475d06c6ee8d98cf8a3e77332f79 100644 (file)
@@ -94,9 +94,8 @@
 #include <hush.h>
 #include <command.h>        /* find_cmd */
 /*cmd_boot.c*/
-extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);      /* do_bootd */
+extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);      /* do_bootd */
 #endif
-#ifdef CONFIG_SYS_HUSH_PARSER
 #ifndef __U_BOOT__
 #include <ctype.h>     /* isalpha, isdigit */
 #include <unistd.h>    /* getpid */
@@ -1019,13 +1018,13 @@ static void get_user_input(struct in_str *i)
        fflush(stdout);
        i->p = the_command;
 #else
-       extern char console_buffer[CONFIG_SYS_CBSIZE];
+       extern char console_buffer[];
        int n;
        static char the_command[CONFIG_SYS_CBSIZE];
 
 #ifdef CONFIG_BOOT_RETRY_TIME
 #  ifdef CONFIG_RESET_TO_RETRY
-       extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+       extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 #  else
 #      error "This currently only works with CONFIG_RESET_TO_RETRY enabled"
 #  endif
@@ -1682,7 +1681,7 @@ static int run_pipe_real(struct pipe *pi)
                        } else {
                                int rcode;
 #if defined(CONFIG_CMD_BOOTD)
-           extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+           extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
                                /* avoid "bootd" recursion */
                                if (cmdtp->cmd == do_bootd) {
@@ -1695,10 +1694,8 @@ static int run_pipe_real(struct pipe *pi)
                                }
 #endif
                                /* found - check max args */
-                               if ((child->argc - i) > cmdtp->maxargs) {
-                                       printf ("Usage:\n%s\n", cmdtp->usage);
-                                       return -1;
-                               }
+                               if ((child->argc - i) > cmdtp->maxargs)
+                                       return cmd_usage(cmdtp);
 #endif
                                child->argv+=i;  /* XXX horrible hack */
 #ifndef __U_BOOT__
@@ -2003,7 +2000,7 @@ static int free_pipe(struct pipe *pi, int indent)
 #ifndef __U_BOOT__
                        globfree(&child->glob_result);
 #else
-                       for (a = child->argc;a >= 0;a--) {
+                       for (a = 0; a < child->argc; a++) {
                                free(child->argv[a]);
                        }
                                        free(child->argv);
@@ -3271,6 +3268,7 @@ int parse_file_outer(void)
 }
 
 #ifdef __U_BOOT__
+#ifndef CONFIG_RELOC_FIXUP_WORKS
 static void u_boot_hush_reloc(void)
 {
        unsigned long addr;
@@ -3281,6 +3279,7 @@ static void u_boot_hush_reloc(void)
                r->literal = (char *)addr;
        }
 }
+#endif
 
 int u_boot_hush_start(void)
 {
@@ -3291,7 +3290,9 @@ int u_boot_hush_start(void)
                top_vars->next = 0;
                top_vars->flg_export = 0;
                top_vars->flg_read_only = 1;
+#ifndef CONFIG_RELOC_FIXUP_WORKS
                u_boot_hush_reloc();
+#endif
        }
        return 0;
 }
@@ -3348,7 +3349,7 @@ static void setup_job_control(void)
        tcsetpgrp(shell_terminal, shell_pgrp);
 }
 
-int hush_main(int argc, char **argv)
+int hush_main(int argc, char * const *argv)
 {
        int opt;
        FILE *input;
@@ -3585,7 +3586,7 @@ static char * make_string(char ** inp)
 }
 
 #ifdef __U_BOOT__
-int do_showvar (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+int do_showvar (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        int i, k;
        int rcode = 0;
@@ -3625,12 +3626,11 @@ int do_showvar (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
 U_BOOT_CMD(
        showvar, CONFIG_SYS_MAXARGS, 1, do_showvar,
-       "showvar- print local hushshell variables\n",
+       "print local hushshell variables",
        "\n    - print values of all hushshell variables\n"
        "showvar name ...\n"
-       "    - print value of hushshell variable 'name'\n"
+       "    - print value of hushshell variable 'name'"
 );
 
 #endif
-#endif /* CONFIG_SYS_HUSH_PARSER */
 /****************************************************************************/