[U-Boot] [RFC PATCH v2 11/15] main: Use autoconf in command line reading
Simon Glass
sjg at chromium.org
Tue Feb 26 06:46:36 CET 2013
Hi Joe,
On Sun, Feb 24, 2013 at 12:56 PM, Joe Hershberger
<joe.hershberger at gmail.com> wrote:
> Hi Simon,
>
> On Sun, Feb 24, 2013 at 11:26 AM, Simon Glass <sjg at chromium.org> wrote:
>> Remove #ifdefs in favour of autoconf for this code. This involves removing
>> a few unnecessary #ifdefs in headers also.
>>
>> We have two versions of the code - one that handles command line editing and
>> one that is just a simple implementation. Create a new function called
>> readline_into_buffer() which calls either cread_line() or the new
>> simple_readline(), created to hold the 'simple' code.
>>
>> The cread_print_hist_list() function is not actually used anywhere, so punt
>> it.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>> Changes in v2: None
>>
>> common/main.c | 186 ++++++++++++++++++++++++------------------------------
>> include/command.h | 2 -
>> include/common.h | 2 -
>> 3 files changed, 84 insertions(+), 106 deletions(-)
>>
>> diff --git a/common/main.c b/common/main.c
>> index e1483db..3966321 100644
>> --- a/common/main.c
>> +++ b/common/main.c
[snip]
>
> It would be great if you separated the following unrelated formatting
> changes into a separate patch.
OK, will do.
>
>> /*
>> * Special character handling
>> */
>> switch (c) {
>> - case '\r': /* Enter */
>> + case '\r': /* Enter */
>> case '\n':
>> *p = '\0';
>> puts ("\r\n");
>> - return (p - p_buf);
>> + return p - p_buf;
>>
>> - case '\0': /* nul */
>> + case '\0': /* nul */
>> continue;
>>
>> - case 0x03: /* ^C - break */
>> + case 0x03: /* ^C - break */
>> p_buf[0] = '\0'; /* discard input */
>> - return (-1);
>> + return -1;
>>
>> - case 0x15: /* ^U - erase line */
>> + case 0x15: /* ^U - erase line */
>> while (col > plen) {
>> puts (erase_seq);
>> --col;
>> @@ -1045,15 +988,15 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout)
>> n = 0;
>> continue;
>>
>> - case 0x17: /* ^W - erase word */
>> + case 0x17: /* ^W - erase word */
>> p=delete_char(p_buf, p, &col, &n, plen);
>> while ((n > 0) && (*p != ' ')) {
>> p=delete_char(p_buf, p, &col, &n, plen);
>> }
>> continue;
>>
>> - case 0x08: /* ^H - backspace */
>> - case 0x7F: /* DEL - backspace */
>> + case 0x08: /* ^H - backspace */
>> + case 0x7F: /* DEL - backspace */
>> p=delete_char(p_buf, p, &col, &n, plen);
>> continue;
>>
>> @@ -1062,22 +1005,28 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout)
>> * Must be a normal character then
>> */
>> if (n < CONFIG_SYS_CBSIZE-2) {
>> - if (c == '\t') { /* expand TABs */
>> -#ifdef CONFIG_AUTO_COMPLETE
>> - /* if auto completion triggered just continue */
>> - *p = '\0';
>> - if (cmd_auto_complete(prompt, console_buffer, &n, &col)) {
>> - p = p_buf + n; /* reset */
>> - continue;
>> + if (c == '\t') { /* expand TABs */
>> + if (autoconf_auto_complete()) {
>> + /*
>> + * if auto completion triggered
>> + * just continue
>> + */
>> + *p = '\0';
>> + if (cmd_auto_complete(prompt,
>> + console_buffer,
>> + &n, &col)) {
>> + /* reset */
>> + p = p_buf + n;
>> + continue;
>> + }
>> }
>> -#endif
>> puts (tab_seq+(col&07));
>> col += 8 - (col&07);
>> } else {
>> char buf[2];
>>
>> /*
>> - * Echo input using puts() to force am
>> + * Echo input using puts() to force an
>> * LCD flush if we are using an LCD
>> */
>> ++col;
[snip]
Regards,
Simon
More information about the U-Boot
mailing list