|
|
|
@ -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 |
|
|
|
|