cli: Create a function to process characters

Move most of the inner loop from cread_line() into a new function. This
will allow using it from other code.

This involves adding a few more members to the state struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/include/cli.h b/include/cli.h
index 1bc1ab8..bbc5327 100644
--- a/include/cli.h
+++ b/include/cli.h
@@ -31,11 +31,16 @@
  * @num: Current cursor position, where 0 is the start
  * @eol_num: Number of characters in the buffer
  * @insert: true if in 'insert' mode
+ * @buf: Buffer containing line
+ * @prompt: Prompt for the line
  */
 struct cli_line_state {
 	uint num;
 	uint eol_num;
+	uint len;
 	bool insert;
+	char *buf;
+	const char *prompt;
 };
 
 /**
@@ -243,6 +248,16 @@
  */
 int cli_ch_process(struct cli_ch_state *cch, int ichar);
 
+/**
+ * cread_line_process_ch() - Process a character for line input
+ *
+ * @cls: CLI line state
+ * @ichar: Character to process
+ * Return: 0 if input is complete, with line in cls->buf, -EINTR if input was
+ * cancelled with Ctrl-C, -EAGAIN if more characters are needed
+ */
+int cread_line_process_ch(struct cli_line_state *cls, char ichar);
+
 /** cread_print_hist_list() - Print the command-line history list */
 void cread_print_hist_list(void);