|
@@ -59,7 +59,6 @@ extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
|
|
|
|
#define MAX_DELAY_STOP_STR 32
|
|
|
|
|
|
-static int parse_line (char *, char *[]);
|
|
|
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
|
|
|
static int abortboot(int);
|
|
|
#endif
|
|
@@ -918,8 +917,15 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len)
|
|
|
*/
|
|
|
int readline (const char *const prompt)
|
|
|
{
|
|
|
+ return readline_into_buffer(prompt, console_buffer);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+int readline_into_buffer (const char *const prompt, char * buffer)
|
|
|
+{
|
|
|
+ char *p = buffer;
|
|
|
+ char * p_buf = p;
|
|
|
#ifdef CONFIG_CMDLINE_EDITING
|
|
|
- char *p = console_buffer;
|
|
|
unsigned int len=MAX_CMDBUF_SIZE;
|
|
|
int rc;
|
|
|
static int initted = 0;
|
|
@@ -934,7 +940,6 @@ int readline (const char *const prompt)
|
|
|
rc = cread_line(prompt, p, &len);
|
|
|
return rc < 0 ? rc : len;
|
|
|
#else
|
|
|
- char *p = console_buffer;
|
|
|
int n = 0; /* buffer index */
|
|
|
int plen = 0; /* prompt length */
|
|
|
int col; /* output column cnt */
|
|
@@ -972,13 +977,13 @@ int readline (const char *const prompt)
|
|
|
case '\n':
|
|
|
*p = '\0';
|
|
|
puts ("\r\n");
|
|
|
- return (p - console_buffer);
|
|
|
+ return (p - p_buf);
|
|
|
|
|
|
case '\0': /* nul */
|
|
|
continue;
|
|
|
|
|
|
case 0x03: /* ^C - break */
|
|
|
- console_buffer[0] = '\0'; /* discard input */
|
|
|
+ p_buf[0] = '\0'; /* discard input */
|
|
|
return (-1);
|
|
|
|
|
|
case 0x15: /* ^U - erase line */
|
|
@@ -986,20 +991,20 @@ int readline (const char *const prompt)
|
|
|
puts (erase_seq);
|
|
|
--col;
|
|
|
}
|
|
|
- p = console_buffer;
|
|
|
+ p = p_buf;
|
|
|
n = 0;
|
|
|
continue;
|
|
|
|
|
|
case 0x17: /* ^W - erase word */
|
|
|
- p=delete_char(console_buffer, p, &col, &n, plen);
|
|
|
+ p=delete_char(p_buf, p, &col, &n, plen);
|
|
|
while ((n > 0) && (*p != ' ')) {
|
|
|
- p=delete_char(console_buffer, p, &col, &n, plen);
|
|
|
+ p=delete_char(p_buf, p, &col, &n, plen);
|
|
|
}
|
|
|
continue;
|
|
|
|
|
|
case 0x08: /* ^H - backspace */
|
|
|
case 0x7F: /* DEL - backspace */
|
|
|
- p=delete_char(console_buffer, p, &col, &n, plen);
|
|
|
+ p=delete_char(p_buf, p, &col, &n, plen);
|
|
|
continue;
|
|
|
|
|
|
default:
|
|
@@ -1012,7 +1017,7 @@ int readline (const char *const prompt)
|
|
|
/* if auto completion triggered just continue */
|
|
|
*p = '\0';
|
|
|
if (cmd_auto_complete(prompt, console_buffer, &n, &col)) {
|
|
|
- p = console_buffer + n; /* reset */
|
|
|
+ p = p_buf + n; /* reset */
|
|
|
continue;
|
|
|
}
|
|
|
#endif
|