mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
Expose parse_line() globally.
Add new function readline_into_buffer() that allows the output of readline to be put into a pointer to char buffer. This refactoring allows other functions besides the main command loop to also use the same input mechanism. Signed-off-by: James Yang <James.Yang@freescale.com> Acked-by: Jon Loeliger <jdl@freescale.com>
This commit is contained in:
parent
7ca9051348
commit
6636b62a6e
2 changed files with 17 additions and 10 deletions
|
@ -59,7 +59,6 @@ extern int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||||
|
|
||||||
#define MAX_DELAY_STOP_STR 32
|
#define MAX_DELAY_STOP_STR 32
|
||||||
|
|
||||||
static int parse_line (char *, char *[]);
|
|
||||||
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
|
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
|
||||||
static int abortboot(int);
|
static int abortboot(int);
|
||||||
#endif
|
#endif
|
||||||
|
@ -918,8 +917,15 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len)
|
||||||
*/
|
*/
|
||||||
int readline (const char *const prompt)
|
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
|
#ifdef CONFIG_CMDLINE_EDITING
|
||||||
char *p = console_buffer;
|
|
||||||
unsigned int len=MAX_CMDBUF_SIZE;
|
unsigned int len=MAX_CMDBUF_SIZE;
|
||||||
int rc;
|
int rc;
|
||||||
static int initted = 0;
|
static int initted = 0;
|
||||||
|
@ -934,7 +940,6 @@ int readline (const char *const prompt)
|
||||||
rc = cread_line(prompt, p, &len);
|
rc = cread_line(prompt, p, &len);
|
||||||
return rc < 0 ? rc : len;
|
return rc < 0 ? rc : len;
|
||||||
#else
|
#else
|
||||||
char *p = console_buffer;
|
|
||||||
int n = 0; /* buffer index */
|
int n = 0; /* buffer index */
|
||||||
int plen = 0; /* prompt length */
|
int plen = 0; /* prompt length */
|
||||||
int col; /* output column cnt */
|
int col; /* output column cnt */
|
||||||
|
@ -972,13 +977,13 @@ int readline (const char *const prompt)
|
||||||
case '\n':
|
case '\n':
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
puts ("\r\n");
|
puts ("\r\n");
|
||||||
return (p - console_buffer);
|
return (p - p_buf);
|
||||||
|
|
||||||
case '\0': /* nul */
|
case '\0': /* nul */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case 0x03: /* ^C - break */
|
case 0x03: /* ^C - break */
|
||||||
console_buffer[0] = '\0'; /* discard input */
|
p_buf[0] = '\0'; /* discard input */
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
||||||
case 0x15: /* ^U - erase line */
|
case 0x15: /* ^U - erase line */
|
||||||
|
@ -986,20 +991,20 @@ int readline (const char *const prompt)
|
||||||
puts (erase_seq);
|
puts (erase_seq);
|
||||||
--col;
|
--col;
|
||||||
}
|
}
|
||||||
p = console_buffer;
|
p = p_buf;
|
||||||
n = 0;
|
n = 0;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case 0x17: /* ^W - erase word */
|
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 != ' ')) {
|
while ((n > 0) && (*p != ' ')) {
|
||||||
p=delete_char(console_buffer, p, &col, &n, plen);
|
p=delete_char(p_buf, p, &col, &n, plen);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case 0x08: /* ^H - backspace */
|
case 0x08: /* ^H - backspace */
|
||||||
case 0x7F: /* DEL - backspace */
|
case 0x7F: /* DEL - backspace */
|
||||||
p=delete_char(console_buffer, p, &col, &n, plen);
|
p=delete_char(p_buf, p, &col, &n, plen);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1012,7 +1017,7 @@ int readline (const char *const prompt)
|
||||||
/* if auto completion triggered just continue */
|
/* if auto completion triggered just continue */
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
if (cmd_auto_complete(prompt, console_buffer, &n, &col)) {
|
if (cmd_auto_complete(prompt, console_buffer, &n, &col)) {
|
||||||
p = console_buffer + n; /* reset */
|
p = p_buf + n; /* reset */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -197,6 +197,8 @@ int print_buffer (ulong addr, void* data, uint width, uint count, uint linelen);
|
||||||
void main_loop (void);
|
void main_loop (void);
|
||||||
int run_command (const char *cmd, int flag);
|
int run_command (const char *cmd, int flag);
|
||||||
int readline (const char *const prompt);
|
int readline (const char *const prompt);
|
||||||
|
int readline_into_buffer (const char *const prompt, char * buffer);
|
||||||
|
int parse_line (char *, char *[]);
|
||||||
void init_cmd_timeout(void);
|
void init_cmd_timeout(void);
|
||||||
void reset_cmd_timeout(void);
|
void reset_cmd_timeout(void);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue