From 5307153236caaf2304e578c148e00a4b65cb8604 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 14 Feb 2012 19:59:21 +0000 Subject: 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 Acked-by: Mike Frysinger --- arch/arm/cpu/arm926ejs/kirkwood/cpu.c | 7 +---- board/esd/common/auto_update.c | 2 +- board/esd/common/cmd_loadpci.c | 2 +- board/esd/du440/du440.c | 2 +- common/cmd_bedbug.c | 2 +- common/cmd_bootm.c | 8 +----- common/cmd_source.c | 4 +-- common/main.c | 49 +++++++++++++++++++---------------- include/common.h | 1 - 9 files changed, 34 insertions(+), 43 deletions(-) diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c index 54d15ea..fba5e01 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c @@ -226,12 +226,7 @@ static void kw_sysrst_action(void) } debug("Starting %s process...\n", __FUNCTION__); -#if !defined(CONFIG_SYS_HUSH_PARSER) - ret = builtin_run_command(s, 0); -#else - ret = parse_string_outer(s, FLAG_PARSE_SEMICOLON - | FLAG_EXIT_FROM_LOOP); -#endif + ret = run_command(s, 0); if (ret < 0) debug("Error.. %s failed\n", __FUNCTION__); else diff --git a/board/esd/common/auto_update.c b/board/esd/common/auto_update.c index 4cc15fa..fc60545 100644 --- a/board/esd/common/auto_update.c +++ b/board/esd/common/auto_update.c @@ -169,7 +169,7 @@ int au_do_update(int i, long sz) k++; } - builtin_run_command(addr, 0); + run_command(addr, 0); return 0; } diff --git a/board/esd/common/cmd_loadpci.c b/board/esd/common/cmd_loadpci.c index c2bf279..8fcae63 100644 --- a/board/esd/common/cmd_loadpci.c +++ b/board/esd/common/cmd_loadpci.c @@ -110,7 +110,7 @@ int do_loadpci(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) * Call run_cmd */ printf("running command at addr 0x%s ...\n", addr); - builtin_run_command((char *)la, 0); + run_command((char *)la, 0); break; default: diff --git a/board/esd/du440/du440.c b/board/esd/du440/du440.c index 75fb200..1ada1bc 100644 --- a/board/esd/du440/du440.c +++ b/board/esd/du440/du440.c @@ -831,7 +831,7 @@ int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) *d = '\0'; start = get_ticks(); - ret = builtin_run_command(cmd, 0); + ret = run_command(cmd, 0); end = get_ticks(); printf("ticks=%ld\n", (ulong)(end - start)); diff --git a/common/cmd_bedbug.c b/common/cmd_bedbug.c index 0228ee8..5b08123 100644 --- a/common/cmd_bedbug.c +++ b/common/cmd_bedbug.c @@ -237,7 +237,7 @@ void bedbug_main_loop (unsigned long addr, struct pt_regs *regs) if (len == -1) printf ("\n"); else - rc = builtin_run_command(lastcommand, flag); + rc = run_command(lastcommand, flag); if (rc <= 0) { /* invalid command or not repeatable, forget it */ diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index 2e3e159..6bfef62 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -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; } diff --git a/common/cmd_source.c b/common/cmd_source.c index 481241c..32fff5c 100644 --- a/common/cmd_source.c +++ b/common/cmd_source.c @@ -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); diff --git a/common/main.c b/common/main.c index 797b245..10ee12c 100644 --- a/common/main.c +++ b/common/main.c @@ -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 ("\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) diff --git a/include/common.h b/include/common.h index e8b62a9..0bda049 100644 --- a/include/common.h +++ b/include/common.h @@ -260,7 +260,6 @@ int print_buffer (ulong addr, void* data, uint width, uint count, uint linelen); /* common/main.c */ void main_loop (void); -int builtin_run_command(const char *cmd, int flag); int run_command(const char *cmd, int flag); int readline (const char *const prompt); int readline_into_buffer(const char *const prompt, char *buffer, -- cgit v1.1