Allow newlines within command environment vars
authorSimon Glass <sjg@chromium.org>
Fri, 30 Mar 2012 21:30:56 +0000 (21:30 +0000)
committerWolfgang Denk <wd@denx.de>
Thu, 9 Aug 2012 20:06:23 +0000 (22:06 +0200)
Any environment variable can hold commands to be executed by the 'run'
command. The environment variables preboot, bootcmd and menucmd have
special code for triggering execution in certain circumstances.

We adjust these calls to use run_command_list() instead of run_command().
This change permits these variables to have embedded newlines so that
they work the same as the 'source' command.

Signed-off-by: Simon Glass <sjg@chromium.org>
common/main.c

index d96ba0a891f3c03f3337a4250e36273d17b7dc0f..94059225735d20c4cd885af85020d1eacdd126ae 100644 (file)
@@ -334,7 +334,7 @@ void main_loop (void)
                int prev = disable_ctrlc(1);    /* disable Control C checking */
 # endif
 
                int prev = disable_ctrlc(1);    /* disable Control C checking */
 # endif
 
-               run_command(p, 0);
+               run_command_list(p, -1, 0);
 
 # ifdef CONFIG_AUTOBOOT_KEYED
                disable_ctrlc(prev);    /* restore Control C checking */
 
 # ifdef CONFIG_AUTOBOOT_KEYED
                disable_ctrlc(prev);    /* restore Control C checking */
@@ -382,7 +382,7 @@ void main_loop (void)
                int prev = disable_ctrlc(1);    /* disable Control C checking */
 # endif
 
                int prev = disable_ctrlc(1);    /* disable Control C checking */
 # endif
 
-               run_command(s, 0);
+               run_command_list(s, -1, 0);
 
 # ifdef CONFIG_AUTOBOOT_KEYED
                disable_ctrlc(prev);    /* restore Control C checking */
 
 # ifdef CONFIG_AUTOBOOT_KEYED
                disable_ctrlc(prev);    /* restore Control C checking */
@@ -393,7 +393,7 @@ void main_loop (void)
        if (menukey == CONFIG_MENUKEY) {
                s = getenv("menucmd");
                if (s)
        if (menukey == CONFIG_MENUKEY) {
                s = getenv("menucmd");
                if (s)
-                       run_command(s, 0);
+                       run_command_list(s, -1, 0);
        }
 #endif /* CONFIG_MENUKEY */
 #endif /* CONFIG_BOOTDELAY */
        }
 #endif /* CONFIG_MENUKEY */
 #endif /* CONFIG_BOOTDELAY */