* (C) Copyright 2005
* JinHua Luo, GuangDong Linux Center, <luo.jinhua@gd-linux.com>
*
- * SPDX-License-Identifier: GPL-2.0+
+ * SPDX-License-Identifier: GPL-2.0
*/
+#include "cli.h"
#include "common.h"
#include <string.h>
#include "env.h"
#include "cli_readline.h"
#include "con-utils.h"
-#include "cli.h"
/* FIXME: Quoting problems */
debug_parser("%s: \"%s\"\n", __func__, line);
- for (outp = inp = line, quote = '\0' ;
- nargs < CONFIG_SYS_MAXARGS && (c = *inp) != '\0';
- inp++) {
+ for (outp = inp = line, quote = '\0'; (c = *inp) != '\0'; inp++) {
switch (state) {
case 0: /* before arg string, waiting for arg start */
break;
}
+
+ if (nargs > CONFIG_SYS_MAXARGS) {
+ --nargs;
+ break;
+ }
*outp++ = c;
}
if (c == '}') {
/* Terminate variable name */
*(inp-1) = '\0';
- const char *envval = getenv(varname);
+ const char *envval = getenv_char(varname);
*(inp-1) = '}';
/* Copy into the line if it exists */
if (envval != NULL)
* WARNING:
*
* We must create a temporary copy of the command since the command we get
- * may be the result from getenv(), which returns a pointer directly to
+ * may be the result from getenv_char(), which returns a pointer directly to
* the environment data, which may change magicly when the command we run
* creates or modifies environment variables (like "bootp" does).
*
/*
- * Run a command using the selected parser.
+ * Run a command.
*
* @param cmd Command to run
* @param flag Execution flags (CMD_FLAG_...)
int rc = 1;
for (;;) {
- len = cli_readline(PSTR(CONFIG_SYS_PROMPT));
+ len = cli_readline(PSTR(CONFIG_SYS_PROMPT), 1);
flag = 0; /* assume no special flags for now */
if (len > 0) {
for (i = 1; i < argc; ++i) {
char *arg;
- arg = getenv(argv[i]);
+ arg = getenv_char(argv[i]);
if (arg == NULL) {
- printf_P(PSTR("## Error: \"%s\" not defined\n"), argv[i]);
+ printf_P(PSTR("## Error: \"%s\" is not set\n"), argv[i]);
return CMD_RET_FAILURE;
}