aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass2023-10-01 19:13:15 -0600
committerTom Rini2023-10-11 15:43:54 -0400
commit8fc041fe4c34bb6108444ee9970151f43add0ce9 (patch)
treeb9894adb19e15d55b4e9b98eb805acbbc94251d1
parent657e14da835298a948eb313feffba6732fe9232e (diff)
cli: Allow history to be disabled
When inputting text outside the command line we don't want history to be accessible. Add an option to control this. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/cli_readline.c42
-rw-r--r--include/cli.h2
2 files changed, 24 insertions, 20 deletions
diff --git a/common/cli_readline.c b/common/cli_readline.c
index fdb84d9204f..fa8f525d3a4 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -361,32 +361,33 @@ int cread_line_process_ch(struct cli_line_state *cls, char ichar)
break;
case CTL_CH('p'):
case CTL_CH('n'):
- {
- char *hline;
+ if (cls->history) {
+ char *hline;
- if (ichar == CTL_CH('p'))
- hline = hist_prev();
- else
- hline = hist_next();
+ if (ichar == CTL_CH('p'))
+ hline = hist_prev();
+ else
+ hline = hist_next();
- if (!hline) {
- getcmd_cbeep();
- break;
- }
+ if (!hline) {
+ getcmd_cbeep();
+ break;
+ }
- /* nuke the current line */
- /* first, go home */
- BEGINNING_OF_LINE();
+ /* nuke the current line */
+ /* first, go home */
+ BEGINNING_OF_LINE();
- /* erase to end of line */
- ERASE_TO_EOL();
+ /* erase to end of line */
+ ERASE_TO_EOL();
- /* copy new line into place and display */
- strcpy(buf, hline);
- cls->eol_num = strlen(buf);
- REFRESH_TO_EOL();
+ /* copy new line into place and display */
+ strcpy(buf, hline);
+ cls->eol_num = strlen(buf);
+ REFRESH_TO_EOL();
+ break;
+ }
break;
- }
case '\t':
if (IS_ENABLED(CONFIG_AUTO_COMPLETE)) {
int num2, col;
@@ -438,6 +439,7 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
cls->len = *len;
cls->prompt = prompt;
cls->buf = buf;
+ cls->history = 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 bbc53276435..252bdb70ab0 100644
--- a/include/cli.h
+++ b/include/cli.h
@@ -31,6 +31,7 @@ struct cli_ch_state {
* @num: Current cursor position, where 0 is the start
* @eol_num: Number of characters in the buffer
* @insert: true if in 'insert' mode
+ * @history: true if history should be accessible
* @buf: Buffer containing line
* @prompt: Prompt for the line
*/
@@ -39,6 +40,7 @@ struct cli_line_state {
uint eol_num;
uint len;
bool insert;
+ bool history;
char *buf;
const char *prompt;
};