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 <s...@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 <na...@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
-- 
1.8.1.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to