Move this code into its own function since it is a separate
implementation from the full version.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 common/cli_readline.c | 79 +++++++++++++++++++++++++------------------
 1 file changed, 46 insertions(+), 33 deletions(-)

diff --git a/common/cli_readline.c b/common/cli_readline.c
index e83743e90c9..9a7c268719d 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -440,41 +440,22 @@ int cli_readline(const char *const prompt)
        return cli_readline_into_buffer(prompt, console_buffer, 0);
 }
 
-
-int cli_readline_into_buffer(const char *const prompt, char *buffer,
-                            int timeout)
+/**
+ * cread_line_simple() - Simple (small) command-line reader
+ *
+ * This supports only basic editing, with no cursor movement
+ *
+ * @prompt: Prompt to display
+ * @p: Text buffer to edit
+ * Return: length of text buffer, or -1 if input was cannncelled (Ctrl-C)
+ */
+static int cread_line_simple(const char *const prompt, char *p)
 {
-       char *p = buffer;
-#ifdef CONFIG_CMDLINE_EDITING
-       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 (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;
+       int n = 0;              /* buffer index */
+       int plen = 0;           /* prompt length */
+       int col;                /* output column cnt */
+       char c;
 
        /* print prompt */
        if (prompt) {
@@ -567,6 +548,38 @@ int cli_readline_into_buffer(const char *const prompt, 
char *buffer,
                        }
                }
        }
+}
+
+int cli_readline_into_buffer(const char *const prompt, char *buffer,
+                            int timeout)
+{
+       char *p = buffer;
+#ifdef CONFIG_CMDLINE_EDITING
+       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 (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 */
+               return cread_line_simple(prompt, p);
 #ifdef CONFIG_CMDLINE_EDITING
        }
 #endif
-- 
2.42.0.459.ge4e396fd5e-goog

Reply via email to