Stop using builtin_run_command()

Boards can select either the 'built-in' parser or the hush parser. We
should not call builtin_run_command() if we are using the hush parser.
We use run_command() instead, since it knows how to call the correct
parser.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Simon Glass
2012-02-14 19:59:21 +00:00
committed by Wolfgang Denk
parent 009dde1955
commit 5307153236
9 changed files with 34 additions and 43 deletions

View File

@@ -237,7 +237,7 @@ void bedbug_main_loop (unsigned long addr, struct pt_regs *regs)
if (len == -1)
printf ("<INTERRUPT>\n");
else
rc = builtin_run_command(lastcommand, flag);
rc = run_command(lastcommand, flag);
if (rc <= 0) {
/* invalid command or not repeatable, forget it */

View File

@@ -1045,14 +1045,8 @@ int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
int rcode = 0;
#ifndef CONFIG_SYS_HUSH_PARSER
if (builtin_run_command(getenv("bootcmd"), flag) < 0)
if (run_command(getenv("bootcmd"), flag) < 0)
rcode = 1;
#else
if (parse_string_outer(getenv("bootcmd"),
FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0)
rcode = 1;
#endif
return rcode;
}

View File

@@ -179,7 +179,7 @@ source (ulong addr, const char *fit_uname)
if (*line) {
debug ("** exec: \"%s\"\n",
line);
if (builtin_run_command(line, 0) < 0) {
if (run_command(line, 0) < 0) {
rcode = 1;
break;
}
@@ -189,7 +189,7 @@ source (ulong addr, const char *fit_uname)
++next;
}
if (rcode == 0 && *line)
rcode = (builtin_run_command(line, 0) >= 0);
rcode = (run_command(line, 0) >= 0);
}
#endif
free (cmd);

View File

@@ -267,26 +267,6 @@ int abortboot(int bootdelay)
# endif /* CONFIG_AUTOBOOT_KEYED */
#endif /* CONFIG_BOOTDELAY >= 0 */
/*
* Return 0 on success, or != 0 on error.
*/
int run_command(const char *cmd, int flag)
{
#ifndef CONFIG_SYS_HUSH_PARSER
/*
* builtin_run_command can return 0 or 1 for success, so clean up
* its result.
*/
if (builtin_run_command(cmd, flag) == -1)
return 1;
return 0;
#else
return parse_string_outer(cmd,
FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP);
#endif
}
/****************************************************************************/
void main_loop (void)
@@ -458,7 +438,7 @@ void main_loop (void)
if (len == -1)
puts ("<INTERRUPT>\n");
else
rc = builtin_run_command(lastcommand, flag);
rc = run_command(lastcommand, flag);
if (rc <= 0) {
/* invalid command or not repeatable, forget it */
@@ -1278,8 +1258,7 @@ static void process_macros (const char *input, char *output)
* the environment data, which may change magicly when the command we run
* creates or modifies environment variables (like "bootp" does).
*/
int builtin_run_command(const char *cmd, int flag)
static int builtin_run_command(const char *cmd, int flag)
{
cmd_tbl_t *cmdtp;
char cmdbuf[CONFIG_SYS_CBSIZE]; /* working copy of cmd */
@@ -1404,6 +1383,30 @@ int builtin_run_command(const char *cmd, int flag)
return rc ? rc : repeatable;
}
/*
* Run a command using the selected parser.
*
* @param cmd Command to run
* @param flag Execution flags (CMD_FLAG_...)
* @return 0 on success, or != 0 on error.
*/
int run_command(const char *cmd, int flag)
{
#ifndef CONFIG_SYS_HUSH_PARSER
/*
* builtin_run_command can return 0 or 1 for success, so clean up
* its result.
*/
if (builtin_run_command(cmd, flag) == -1)
return 1;
return 0;
#else
return parse_string_outer(cmd,
FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP);
#endif
}
/****************************************************************************/
#if defined(CONFIG_CMD_RUN)