Message ID | 1361726773-18639-12-git-send-email-sjg@chromium.org |
---|---|
State | Superseded, archived |
Headers | show |
Hi Simon, On Sun, Feb 24, 2013 at 11:26 AM, Simon Glass <sjg@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@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 > @@ -514,8 +514,6 @@ void reset_cmd_timeout(void) > } > #endif > > -#ifdef CONFIG_CMDLINE_EDITING > - > /* > * cmdline-editing related codes from vivi. > * Author: Janghoon Lyu <nandy@mizi.com> > @@ -618,27 +616,6 @@ static char* hist_next(void) > return (ret); > } > > -#ifndef CONFIG_CMDLINE_EDITING > -static void cread_print_hist_list(void) > -{ > - int i; > - unsigned long n; > - > - n = hist_num - hist_max; > - > - i = hist_add_idx + 1; > - while (1) { > - if (i > hist_max) > - i = 0; > - if (i == hist_add_idx) > - break; > - printf("%s\n", hist_list[i]); > - n++; > - i++; > - } > -} > -#endif /* CONFIG_CMDLINE_EDITING */ > - > #define BEGINNING_OF_LINE() { \ > while (num) { \ > getcmd_putch(CTL_BACKSPACE); \ > @@ -900,27 +877,27 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len, > REFRESH_TO_EOL(); > continue; > } > -#ifdef CONFIG_AUTO_COMPLETE > - case '\t': { > - int num2, col; > + case '\t': > + if (autoconf_auto_complete()) { > + int num2, col; > > - /* do not autocomplete when in the middle */ > - if (num < eol_num) { > - getcmd_cbeep(); > - break; > - } > + /* do not autocomplete when in the middle */ > + if (num < eol_num) { > + getcmd_cbeep(); > + break; > + } > > - buf[num] = '\0'; > - col = strlen(prompt) + eol_num; > - num2 = num; > - if (cmd_auto_complete(prompt, buf, &num2, &col)) { > - col = num2 - num; > - num += col; > - eol_num += col; > + buf[num] = '\0'; > + col = strlen(prompt) + eol_num; > + num2 = num; > + if (cmd_auto_complete(prompt, buf, &num2, > + &col)) { > + col = num2 - num; > + num += col; > + eol_num += col; > + } > + break; > } > - break; > - } > -#endif > default: > cread_add_char(ichar, insert, &num, &eol_num, buf, *len); > break; > @@ -936,8 +913,6 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len, > return 0; > } > > -#endif /* CONFIG_CMDLINE_EDITING */ > - > /****************************************************************************/ > > /* > @@ -959,46 +934,14 @@ int readline (const char *const prompt) > return readline_into_buffer(prompt, console_buffer, 0); > } > > - > -int readline_into_buffer(const char *const prompt, char *buffer, int timeout) > +static int simple_readline(const char *const prompt, int plen, char *p, > + int timeout) > { > - char *p = buffer; > -#ifdef CONFIG_CMDLINE_EDITING > - unsigned int len = CONFIG_SYS_CBSIZE; > - int rc; > - static int initted = 0; > - > - /* > - * History uses a global array which is not > - * writable until after relocation to RAM. > - * Revert to non-history version if still > - * running from flash. > - */ > - if (gd->flags & GD_FLG_RELOC) { > - if (!initted) { > - hist_init(); > - initted = 1; > - } > - > - if (prompt) > - puts (prompt); > - > - rc = cread_line(prompt, p, &len, timeout); > - return rc < 0 ? rc : len; > - > - } else { > -#endif /* CONFIG_CMDLINE_EDITING */ > char * p_buf = p; > int n = 0; /* buffer index */ > - int plen = 0; /* prompt length */ > int col; /* output column cnt */ > char c; > > - /* print prompt */ > - if (prompt) { > - plen = strlen (prompt); > - puts (prompt); > - } > col = plen; > > for (;;) { > @@ -1011,32 +954,32 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout) > } > WATCHDOG_RESET(); /* Trigger watchdog, if needed */ > > -#ifdef CONFIG_SHOW_ACTIVITY > - while (!tstc()) { > - show_activity(0); > - WATCHDOG_RESET(); > + if (autoconf_show_activity()) { > + while (!tstc()) { > + show_activity(0); > + WATCHDOG_RESET(); > + } > } > -#endif > c = getc(); > It would be great if you separated the following unrelated formatting changes into a separate patch. > /* > * 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; > @@ -1092,9 +1041,42 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout) > } > } > } > -#ifdef CONFIG_CMDLINE_EDITING > +} > + > +int readline_into_buffer(const char *const prompt, char *buffer, int timeout) > +{ > + unsigned int len = CONFIG_SYS_CBSIZE; > + int rc; > + static int initted; > + > + /* > + * History uses a global array which is not > + * writable until after relocation to RAM. > + * Revert to non-history version if still > + * running from flash. > + */ > + if (autoconf_cmdline_editing() && (gd->flags & GD_FLG_RELOC)) { > + if (!initted) { > + hist_init(); > + initted = 1; > + } > + > + if (prompt) > + puts(prompt); > + > + rc = cread_line(prompt, buffer, &len, timeout); > + return rc < 0 ? rc : len; > + > + } else { > + int plen = 0; /* prompt length */ > + > + /* print prompt */ > + if (prompt) { > + plen = strlen(prompt); > + puts(prompt); > + } > + return simple_readline(prompt, plen, buffer, timeout); > } > -#endif > } > > /****************************************************************************/ > diff --git a/include/command.h b/include/command.h > index 3785eb9..80da938 100644 > --- a/include/command.h > +++ b/include/command.h > @@ -75,10 +75,8 @@ cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len); > > extern int cmd_usage(const cmd_tbl_t *cmdtp); > > -#ifdef CONFIG_AUTO_COMPLETE > extern int var_complete(int argc, char * const argv[], char last_char, int maxv, char *cmdv[]); > extern int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp); > -#endif > > /* > * Monitor Command > diff --git a/include/common.h b/include/common.h > index fb219fd..1457349 100644 > --- a/include/common.h > +++ b/include/common.h > @@ -857,9 +857,7 @@ int pcmcia_init (void); > > #include <bootstage.h> > > -#ifdef CONFIG_SHOW_ACTIVITY > void show_activity(int arg); > -#endif > > /* Multicore arch functions */ > #ifdef CONFIG_MP > -- > 1.8.1.3 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
Hi Joe, On Sun, Feb 24, 2013 at 12:56 PM, Joe Hershberger <joe.hershberger@gmail.com> wrote: > Hi Simon, > > On Sun, Feb 24, 2013 at 11:26 AM, Simon Glass <sjg@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@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
diff --git a/common/main.c b/common/main.c index e1483db..3966321 100644 --- a/common/main.c +++ b/common/main.c @@ -514,8 +514,6 @@ void reset_cmd_timeout(void) } #endif -#ifdef CONFIG_CMDLINE_EDITING - /* * cmdline-editing related codes from vivi. * Author: Janghoon Lyu <nandy@mizi.com> @@ -618,27 +616,6 @@ static char* hist_next(void) return (ret); } -#ifndef CONFIG_CMDLINE_EDITING -static void cread_print_hist_list(void) -{ - int i; - unsigned long n; - - n = hist_num - hist_max; - - i = hist_add_idx + 1; - while (1) { - if (i > hist_max) - i = 0; - if (i == hist_add_idx) - break; - printf("%s\n", hist_list[i]); - n++; - i++; - } -} -#endif /* CONFIG_CMDLINE_EDITING */ - #define BEGINNING_OF_LINE() { \ while (num) { \ getcmd_putch(CTL_BACKSPACE); \ @@ -900,27 +877,27 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len, REFRESH_TO_EOL(); continue; } -#ifdef CONFIG_AUTO_COMPLETE - case '\t': { - int num2, col; + case '\t': + if (autoconf_auto_complete()) { + int num2, col; - /* do not autocomplete when in the middle */ - if (num < eol_num) { - getcmd_cbeep(); - break; - } + /* do not autocomplete when in the middle */ + if (num < eol_num) { + getcmd_cbeep(); + break; + } - buf[num] = '\0'; - col = strlen(prompt) + eol_num; - num2 = num; - if (cmd_auto_complete(prompt, buf, &num2, &col)) { - col = num2 - num; - num += col; - eol_num += col; + buf[num] = '\0'; + col = strlen(prompt) + eol_num; + num2 = num; + if (cmd_auto_complete(prompt, buf, &num2, + &col)) { + col = num2 - num; + num += col; + eol_num += col; + } + break; } - break; - } -#endif default: cread_add_char(ichar, insert, &num, &eol_num, buf, *len); break; @@ -936,8 +913,6 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len, return 0; } -#endif /* CONFIG_CMDLINE_EDITING */ - /****************************************************************************/ /* @@ -959,46 +934,14 @@ int readline (const char *const prompt) return readline_into_buffer(prompt, console_buffer, 0); } - -int readline_into_buffer(const char *const prompt, char *buffer, int timeout) +static int simple_readline(const char *const prompt, int plen, char *p, + int timeout) { - char *p = buffer; -#ifdef CONFIG_CMDLINE_EDITING - unsigned int len = CONFIG_SYS_CBSIZE; - int rc; - static int initted = 0; - - /* - * History uses a global array which is not - * writable until after relocation to RAM. - * Revert to non-history version if still - * running from flash. - */ - if (gd->flags & GD_FLG_RELOC) { - if (!initted) { - hist_init(); - initted = 1; - } - - if (prompt) - puts (prompt); - - rc = cread_line(prompt, p, &len, timeout); - return rc < 0 ? rc : len; - - } else { -#endif /* CONFIG_CMDLINE_EDITING */ char * p_buf = p; int n = 0; /* buffer index */ - int plen = 0; /* prompt length */ int col; /* output column cnt */ char c; - /* print prompt */ - if (prompt) { - plen = strlen (prompt); - puts (prompt); - } col = plen; for (;;) { @@ -1011,32 +954,32 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout) } WATCHDOG_RESET(); /* Trigger watchdog, if needed */ -#ifdef CONFIG_SHOW_ACTIVITY - while (!tstc()) { - show_activity(0); - WATCHDOG_RESET(); + if (autoconf_show_activity()) { + while (!tstc()) { + show_activity(0); + WATCHDOG_RESET(); + } } -#endif c = getc(); /* * 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; @@ -1092,9 +1041,42 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout) } } } -#ifdef CONFIG_CMDLINE_EDITING +} + +int readline_into_buffer(const char *const prompt, char *buffer, int timeout) +{ + unsigned int len = CONFIG_SYS_CBSIZE; + int rc; + static int initted; + + /* + * History uses a global array which is not + * writable until after relocation to RAM. + * Revert to non-history version if still + * running from flash. + */ + if (autoconf_cmdline_editing() && (gd->flags & GD_FLG_RELOC)) { + if (!initted) { + hist_init(); + initted = 1; + } + + if (prompt) + puts(prompt); + + rc = cread_line(prompt, buffer, &len, timeout); + return rc < 0 ? rc : len; + + } else { + int plen = 0; /* prompt length */ + + /* print prompt */ + if (prompt) { + plen = strlen(prompt); + puts(prompt); + } + return simple_readline(prompt, plen, buffer, timeout); } -#endif } /****************************************************************************/ diff --git a/include/command.h b/include/command.h index 3785eb9..80da938 100644 --- a/include/command.h +++ b/include/command.h @@ -75,10 +75,8 @@ cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len); extern int cmd_usage(const cmd_tbl_t *cmdtp); -#ifdef CONFIG_AUTO_COMPLETE extern int var_complete(int argc, char * const argv[], char last_char, int maxv, char *cmdv[]); extern int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp); -#endif /* * Monitor Command diff --git a/include/common.h b/include/common.h index fb219fd..1457349 100644 --- a/include/common.h +++ b/include/common.h @@ -857,9 +857,7 @@ int pcmcia_init (void); #include <bootstage.h> -#ifdef CONFIG_SHOW_ACTIVITY void show_activity(int arg); -#endif /* Multicore arch functions */ #ifdef CONFIG_MP
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@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(-)