diff options
author | Simon Glass <sjg@chromium.org> | 2014-04-10 20:01:29 -0600 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2014-05-29 17:48:21 -0400 |
commit | 30354978ff470470c15caea2566b61b5792ad277 (patch) | |
tree | 5f6b7ae28ec83cb06e49f9a39b0e0621279c095c /common/main.c | |
parent | 66ded17dfc8110f0d9aa9d50fe140a320bfa4e53 (diff) | |
download | u-boot-30354978ff470470c15caea2566b61b5792ad277.tar.gz u-boot-30354978ff470470c15caea2566b61b5792ad277.tar.bz2 u-boot-30354978ff470470c15caea2566b61b5792ad277.zip |
Move command line API into cli.c
We now have a single entry point to the CLI, whether simple or hush. Put
this in its own file.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/main.c')
-rw-r--r-- | common/main.c | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/common/main.c b/common/main.c index 19d6f2caff..c4ed846c3b 100644 --- a/common/main.c +++ b/common/main.c @@ -10,7 +10,6 @@ #include <common.h> #include <autoboot.h> #include <cli.h> -#include <command.h> #include <cli_hush.h> #include <malloc.h> #include <version.h> @@ -96,95 +95,3 @@ void main_loop(void) cli_loop(); #endif /*CONFIG_SYS_HUSH_PARSER*/ } - -/****************************************************************************/ - -/* - * 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 - /* - * cli_run_command can return 0 or 1 for success, so clean up - * its result. - */ - if (cli_simple_run_command(cmd, flag) == -1) - return 1; - - return 0; -#else - return parse_string_outer(cmd, - FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP); -#endif -} - -int run_command_list(const char *cmd, int len, int flag) -{ - int need_buff = 1; - char *buff = (char *)cmd; /* cast away const */ - int rcode = 0; - - if (len == -1) { - len = strlen(cmd); -#ifdef CONFIG_SYS_HUSH_PARSER - /* hush will never change our string */ - need_buff = 0; -#else - /* the built-in parser will change our string if it sees \n */ - need_buff = strchr(cmd, '\n') != NULL; -#endif - } - if (need_buff) { - buff = malloc(len + 1); - if (!buff) - return 1; - memcpy(buff, cmd, len); - buff[len] = '\0'; - } -#ifdef CONFIG_SYS_HUSH_PARSER - rcode = parse_string_outer(buff, FLAG_PARSE_SEMICOLON); -#else - /* - * This function will overwrite any \n it sees with a \0, which - * is why it can't work with a const char *. Here we are making - * using of internal knowledge of this function, to avoid always - * doing a malloc() which is actually required only in a case that - * is pretty rare. - */ - rcode = cli_simple_run_command_list(buff, flag); - if (need_buff) - free(buff); -#endif - - return rcode; -} - -/****************************************************************************/ - -#if defined(CONFIG_CMD_RUN) -int do_run (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) -{ - int i; - - if (argc < 2) - return CMD_RET_USAGE; - - for (i=1; i<argc; ++i) { - char *arg; - - if ((arg = getenv (argv[i])) == NULL) { - printf ("## Error: \"%s\" not defined\n", argv[i]); - return 1; - } - - if (run_command_list(arg, -1, flag) != 0) - return 1; - } - return 0; -} -#endif |