Re: [PATCH v3 3/3] cli: compile history code if and only if history config is selected

2024-03-13 Thread Tom Rini
On Tue, Mar 05, 2024 at 03:37:37PM +0800, Hanyuan Zhao wrote:

> This commit allows user to determine whether to have history recording
> in command-line. Previously to this commit, the CMD_HISTORY only sets
> the compiling of cmd/history.c, and the history code in cli_readline.c
> is always compiled and will take a lot of space to store history even if
> we say N to CMD_HISTORY.
> 
> 
> Signed-off-by: Hanyuan Zhao 

This part of your series breaks some riscv platforms:
https://source.denx.de/u-boot/u-boot/-/jobs/798333
https://source.denx.de/u-boot/u-boot/-/jobs/798334

-- 
Tom


signature.asc
Description: PGP signature


[PATCH v3 3/3] cli: compile history code if and only if history config is selected

2024-03-04 Thread Hanyuan Zhao
This commit allows user to determine whether to have history recording
in command-line. Previously to this commit, the CMD_HISTORY only sets
the compiling of cmd/history.c, and the history code in cli_readline.c
is always compiled and will take a lot of space to store history even if
we say N to CMD_HISTORY.


Signed-off-by: Hanyuan Zhao 
---
This is v3 of patch series cli: allow users to disable history
if unused at all. Please ignore the v2 version.
---
Changes v1 -> v3:
  - Move the #ifdef CONFIG_CMD_HISTORY directives to this patch. These 
directives
are still necessary when users are not using the history.
---
 common/cli_readline.c | 37 +
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/common/cli_readline.c b/common/cli_readline.c
index cf4339d0e5..9f71b33a01 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -67,12 +67,14 @@ static char *delete_char (char *buffer, char *p, int *colp, 
int *np, int plen)
 #define CTL_BACKSPACE  ('\b')
 #define DEL((char)255)
 #define DEL7   ((char)127)
-#define CREAD_HIST_CHAR('!')
 
 #define getcmd_putch(ch)   putc(ch)
 #define getcmd_getch() getchar()
 #define getcmd_cbeep() getcmd_putch('\a')
 
+#ifdef CONFIG_CMD_HISTORY
+
+#define CREAD_HIST_CHAR('!')
 #ifdef CONFIG_SPL_BUILD
 #define HIST_MAX   3
 #define HIST_SIZE  32
@@ -93,14 +95,6 @@ static char *hist_list[HIST_MAX];
 
 #define add_idx_minus_one() ((hist_add_idx == 0) ? hist_max : hist_add_idx-1)
 
-static void getcmd_putchars(int count, int ch)
-{
-   int i;
-
-   for (i = 0; i < count; i++)
-   getcmd_putch(ch);
-}
-
 static int hist_init(void)
 {
int i;
@@ -201,6 +195,15 @@ void cread_print_hist_list(void)
i++;
}
 }
+#endif /* CONFIG_CMD_HISTORY */
+
+static void getcmd_putchars(int count, int ch)
+{
+   int i;
+
+   for (i = 0; i < count; i++)
+   getcmd_putch(ch);
+}
 
 #define BEGINNING_OF_LINE() {  \
while (cls->num) {  \
@@ -374,6 +377,7 @@ int cread_line_process_ch(struct cli_line_state *cls, char 
ichar)
cls->eol_num--;
}
break;
+#ifdef CONFIG_CMD_HISTORY
case CTL_CH('p'):
case CTL_CH('n'):
if (cls->history) {
@@ -403,6 +407,7 @@ int cread_line_process_ch(struct cli_line_state *cls, char 
ichar)
break;
}
break;
+#endif
case '\t':
if (IS_ENABLED(CONFIG_AUTO_COMPLETE) && cls->cmd_complete) {
int num2, col;
@@ -499,19 +504,23 @@ static int cread_line(const char *const prompt, char 
*buf, unsigned int *len,
}
*len = cls->eol_num;
 
+#ifdef CONFIG_CMD_HISTORY
if (buf[0] && buf[0] != CREAD_HIST_CHAR)
cread_add_to_hist(buf);
hist_cur = hist_add_idx;
+#endif
 
return 0;
 }
 
 #else /* !CONFIG_CMDLINE_EDITING */
 
+#ifdef CONFIG_CMD_HISTORY
 static inline int hist_init(void)
 {
return 0;
 }
+#endif
 
 static int cread_line(const char *const prompt, char *buf, unsigned int *len,
  int timeout)
@@ -649,7 +658,9 @@ int cli_readline_into_buffer(const char *const prompt, char 
*buffer,
char *p = buffer;
uint len = CONFIG_SYS_CBSIZE;
int rc;
-   static int initted;
+#ifdef CONFIG_CMD_HISTORY
+   static int hist_initted;
+#endif
 
/*
 * Say N to CMD_HISTORY_USE_CALLOC will skip runtime
@@ -663,11 +674,13 @@ int cli_readline_into_buffer(const char *const prompt, 
char *buffer,
 * or disable CMD_HISTORY.
 */
if (IS_ENABLED(CONFIG_CMDLINE_EDITING) && (gd->flags & GD_FLG_RELOC)) {
-   if (!initted) {
+#ifdef CONFIG_CMD_HISTORY
+   if (!hist_initted) {
rc = hist_init();
if (rc == 0)
-   initted = 1;
+   hist_initted = 1;
}
+#endif
 
if (prompt)
puts(prompt);
-- 
2.34.1