diff options
| author | Bernard Xiong <[email protected]> | 2014-01-13 00:05:16 -0800 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2014-01-13 00:05:16 -0800 |
| commit | 2970723cb03191f2b756ef5f5e18ce093cc0ca3c (patch) | |
| tree | 5ab13aeab59346299b3796d7b3c22ab29fe8144b | |
| parent | 97508eb48e33d978072b6ee12f38fdac4fa34ea1 (diff) | |
| parent | 1c8693c87eb4636df0edeb0dfeb36551df6f5e75 (diff) | |
Merge pull request #231 from roamboy/master
Update msh.c
| -rw-r--r-- | components/finsh/msh.c | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/components/finsh/msh.c b/components/finsh/msh.c index 8da80fad5b..35ebb4b559 100644 --- a/components/finsh/msh.c +++ b/components/finsh/msh.c @@ -253,26 +253,38 @@ int msh_exec(char* cmd, rt_size_t length) { int argc; char *argv[RT_FINSH_ARG_MAX]; - - int cmd0_size = 0; + int cmd0_size = 0; cmd_function_t cmd_func; - while ((cmd[cmd0_size] != ' ' && cmd[cmd0_size] != '\t') && cmd0_size < length) - cmd0_size ++; - - /* try to get built-in command */ - cmd_func = msh_get_cmd(cmd, cmd0_size); - if (cmd_func == RT_NULL) - { + while(*cmd == ' ') + { + cmd++; + length--; + } + while ((cmd[cmd0_size] != ' ' && cmd[cmd0_size] != '\t') && cmd0_size < length) + cmd0_size ++; + + /* try to get built-in command */ + if (cmd0_size == 0) return -1; + cmd_func = msh_get_cmd(cmd, cmd0_size); + if (cmd_func == RT_NULL) + { #ifdef RT_USING_MODULE - msh_exec_module(cmd, length); + msh_exec_module(cmd, length); #else - rt_kprintf("%s: command not found.\n", argv[0]); + argv[0] = cmd; + while(*cmd != ' ') + { + if (*cmd == 0) break; + cmd++; + } + if (*cmd == ' ') *cmd = 0; + rt_kprintf("%s: command not found.\n", argv[0]); #endif - return -1; - } + return -1; + } - /* split arguments */ + /* split arguments */ memset(argv, 0x00, sizeof(argv)); argc = msh_split(cmd, length, argv); if (argc == 0) return -1; |
