aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass2023-10-01 19:13:08 -0600
committerTom Rini2023-10-11 15:43:54 -0400
commit6321391ac3e310081768b6170554d4f49416b5c2 (patch)
tree9269b3981c7a34ccd68903d7cfd038ffb47e8780 /common
parent039f8cc375fb9ad28def3403f2e3483c1ded571e (diff)
cli: Drop #ifdefs for CONFIG_AUTO_COMPLETE in cli_readline
Use a static inline and adjust the logic to avoid the need for #ifdefs in cli_readline_into_buffer() Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/cli_readline.c85
1 files changed, 42 insertions, 43 deletions
diff --git a/common/cli_readline.c b/common/cli_readline.c
index 61f9ba99068..458e927e492 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -386,27 +386,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 (IS_ENABLED(CONFIG_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();
+ 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;
}
-
- 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;
- }
-#endif
+ fallthrough;
default:
cread_add_char(ichar, insert, &num, &eol_num, buf,
*len);
@@ -519,14 +519,15 @@ static int cread_line_simple(const char *const prompt, char *p)
continue;
default:
- /*
- * Must be a normal character then
- */
- if (n < CONFIG_SYS_CBSIZE-2) {
- if (c == '\t') { /* expand TABs */
-#ifdef CONFIG_AUTO_COMPLETE
+ /* Must be a normal character then */
+ if (n >= CONFIG_SYS_CBSIZE - 2) { /* Buffer full */
+ putc('\a');
+ break;
+ }
+ if (c == '\t') { /* expand TABs */
+ if (IS_ENABLED(CONFIG_AUTO_COMPLETE)) {
/*
- * if auto completion triggered just
+ * if auto-completion triggered just
* continue
*/
*p = '\0';
@@ -536,26 +537,24 @@ static int cread_line_simple(const char *const prompt, char *p)
p = p_buf + n; /* reset */
continue;
}
-#endif
- puts(tab_seq + (col & 07));
- col += 8 - (col & 07);
- } else {
- char __maybe_unused buf[2];
-
- /*
- * Echo input using puts() to force an
- * LCD flush if we are using an LCD
- */
- ++col;
- buf[0] = c;
- buf[1] = '\0';
- puts(buf);
}
- *p++ = c;
- ++n;
- } else { /* Buffer full */
- putc('\a');
+ puts(tab_seq + (col & 07));
+ col += 8 - (col & 07);
+ } else {
+ char __maybe_unused buf[2];
+
+ /*
+ * Echo input using puts() to force an LCD
+ * flush if we are using an LCD
+ */
+ ++col;
+ buf[0] = c;
+ buf[1] = '\0';
+ puts(buf);
}
+ *p++ = c;
+ ++n;
+ break;
}
}
}