From: Simon Glass <sjg@chromium.org>
Date: Mon, 2 Oct 2023 01:13:16 +0000 (-0600)
Subject: cli: Allow command completion to be disabled
X-Git-Tag: v2025.01-rc5-pxa1908~831^2~24
X-Git-Url: http://git.dujemihanovic.xyz/html/static/git-favicon.png?a=commitdiff_plain;h=3b487bf51115bfb9a0f85667a5608fc57788107c;p=u-boot.git

cli: Allow command completion to be disabled

When inputting text outside the command line we don't want to use tab
for command completion. Add an option to control this.

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

diff --git a/common/cli_readline.c b/common/cli_readline.c
index fa8f525d3a..23913a857a 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -389,7 +389,7 @@ int cread_line_process_ch(struct cli_line_state *cls, char ichar)
 		}
 		break;
 	case '\t':
-		if (IS_ENABLED(CONFIG_AUTO_COMPLETE)) {
+		if (IS_ENABLED(CONFIG_AUTO_COMPLETE) && cls->cmd_complete) {
 			int num2, col;
 
 			/* do not autocomplete when in the middle */
@@ -440,6 +440,7 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
 	cls->prompt = prompt;
 	cls->buf = buf;
 	cls->history = true;
+	cls->cmd_complete = true;
 
 	if (init_len)
 		cread_add_str(buf, init_len, 1, &cls->num, &cls->eol_num, buf,
diff --git a/include/cli.h b/include/cli.h
index 252bdb70ab..ad3cb4499f 100644
--- a/include/cli.h
+++ b/include/cli.h
@@ -32,6 +32,7 @@ struct cli_ch_state {
  * @eol_num: Number of characters in the buffer
  * @insert: true if in 'insert' mode
  * @history: true if history should be accessible
+ * @cmd_complete: true if tab completion should be enabled
  * @buf: Buffer containing line
  * @prompt: Prompt for the line
  */
@@ -41,6 +42,7 @@ struct cli_line_state {
 	uint len;
 	bool insert;
 	bool history;
+	bool cmd_complete;
 	char *buf;
 	const char *prompt;
 };