]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/cli.c
env in ram
[z180-stamp.git] / avr / cli.c
index 4b77499e4a2feb8009d477db11c37c20ec6bf0b4..be5df40deb6c2d393d59ef7799eb53b862f42940 100644 (file)
--- a/avr/cli.c
+++ b/avr/cli.c
@@ -181,11 +181,11 @@ static int cli_run_command(const char *cmd, int flag)
        if (!cmd || !*cmd)
                return -1;      /* empty command */
 
-
-       cmdbuf = xmalloc(strlen(cmd) + 1);
+       cmdbuf = strdup(cmd);
        finaltoken = xmalloc(CONFIG_SYS_CBSIZE);
+       if (!finaltoken)
+               return -1;      /* not enough memory */
 
-       strcpy(cmdbuf, cmd);
        str = cmdbuf;
 
        /* Process separators and check for invalid
@@ -232,7 +232,7 @@ static int cli_run_command(const char *cmd, int flag)
                        continue;
                }
 
-               if (cmd_process(flag, argc, argv, &repeatable))
+               if (cmd_process(flag, argc, argv, &repeatable) != CMD_RET_SUCCESS)
                        rc = -1;
 
                /* Did the user stop this? */
@@ -309,11 +309,8 @@ void cli_loop(void)
 
                flag = 0;       /* assume no special flags for now */
                if (len > 0) {
-                       lastcommand = (char *) xrealloc(lastcommand, len+1);
-                       if (lastcommand != NULL) {
-                               strncpy(lastcommand, console_buffer, len+1);
-                               lastcommand[len] = '\0';
-                       }
+                       free (lastcommand);
+                       lastcommand = strdup(console_buffer);
                } else if (len == 0)
                        flag |= CMD_FLAG_REPEAT;
 
@@ -331,7 +328,7 @@ void cli_loop(void)
 }
 
 
-int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        int i;
        (void) cmdtp;
@@ -345,12 +342,12 @@ int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                arg = getenv(argv[i]);
                if (arg == NULL) {
                        printf_P(PSTR("## Error: \"%s\" not defined\n"), argv[i]);
-                       return 1;
+                       return CMD_RET_FAILURE;
                }
 
                if (run_command(arg, flag) != 0)
-                       return 1;
+                       return CMD_RET_FAILURE;
        }
-       return 0;
+       return CMD_RET_SUCCESS;
 }