Merge branch 'master' of git://www.denx.de/git/u-boot-microblaze
[oweals/u-boot.git] / common / cli.c
index 272b0288d76d56bbcaf5bb16310898d023b9127c..18d7e198a88235bd06fc82b6466d6bb865286071 100644 (file)
 #include <common.h>
 #include <cli.h>
 #include <cli_hush.h>
+#include <console.h>
 #include <fdtdec.h>
 #include <malloc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_CMDLINE
 /*
  * Run a command using the selected parser.
  *
@@ -36,8 +38,11 @@ int run_command(const char *cmd, int flag)
 
        return 0;
 #else
-       return parse_string_outer(cmd,
-                       FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP);
+       int hush_flags = FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP;
+
+       if (flag & CMD_FLAG_ENV)
+               hush_flags |= FLAG_CONT_ON_NEWLINE;
+       return parse_string_outer(cmd, hush_flags);
 #endif
 }
 
@@ -64,6 +69,7 @@ int run_command_repeatable(const char *cmd, int flag)
        return 0;
 #endif
 }
+#endif /* CONFIG_CMDLINE */
 
 int run_command_list(const char *cmd, int len, int flag)
 {
@@ -98,10 +104,14 @@ int run_command_list(const char *cmd, int len, int flag)
         * doing a malloc() which is actually required only in a case that
         * is pretty rare.
         */
+#ifdef CONFIG_CMDLINE
        rcode = cli_simple_run_command_list(buff, flag);
+#else
+       rcode = board_run_command(buff);
+#endif
+#endif
        if (need_buff)
                free(buff);
-#endif
 
        return rcode;
 }
@@ -125,14 +135,14 @@ int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        return 1;
                }
 
-               if (run_command(arg, flag) != 0)
+               if (run_command(arg, flag | CMD_FLAG_ENV) != 0)
                        return 1;
        }
        return 0;
 }
 #endif
 
-#ifdef CONFIG_OF_CONTROL
+#if CONFIG_IS_ENABLED(OF_CONTROL)
 bool cli_process_fdt(const char **cmdp)
 {
        /* Allow the fdt to override the boot command */
@@ -162,7 +172,9 @@ bool cli_process_fdt(const char **cmdp)
  */
 void cli_secure_boot_cmd(const char *cmd)
 {
+#ifdef CONFIG_CMDLINE
        cmd_tbl_t *cmdtp;
+#endif
        int rc;
 
        if (!cmd) {
@@ -174,6 +186,7 @@ void cli_secure_boot_cmd(const char *cmd)
        disable_ctrlc(1);
 
        /* Find the command directly. */
+#ifdef CONFIG_CMDLINE
        cmdtp = find_cmd(cmd);
        if (!cmdtp) {
                printf("## Error: \"%s\" not defined\n", cmd);
@@ -183,6 +196,10 @@ void cli_secure_boot_cmd(const char *cmd)
        /* Run the command, forcing no flags and faking argc and argv. */
        rc = (cmdtp->cmd)(cmdtp, 0, 1, (char **)&cmd);
 
+#else
+       rc = board_run_command(cmd);
+#endif
+
        /* Shouldn't ever return from boot command. */
        printf("## Error: \"%s\" returned (code %d)\n", cmd, rc);
 
@@ -193,7 +210,7 @@ err:
         */
        hang();
 }
-#endif /* CONFIG_OF_CONTROL */
+#endif /* CONFIG_IS_ENABLED(OF_CONTROL) */
 
 void cli_loop(void)
 {
@@ -201,8 +218,10 @@ void cli_loop(void)
        parse_file_outer();
        /* This point is never reached */
        for (;;);
-#else
+#elif defined(CONFIG_CMDLINE)
        cli_simple_loop();
+#else
+       printf("## U-Boot command line is disabled. Please enable CONFIG_CMDLINE\n");
 #endif /*CONFIG_SYS_HUSH_PARSER*/
 }