diff options
| author | Tom Rini <[email protected]> | 2023-12-20 16:00:22 -0500 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2023-12-20 16:00:22 -0500 |
| commit | 36d3db6c2c060ee85176156dc9a607e8cd5465f4 (patch) | |
| tree | 51f6187c51418043e5dc56f6f9a2dac09e2e848d /common | |
| parent | a0d0e132b39e48cf471db87600ed87b4e65bc187 (diff) | |
| parent | 97135d9f4220e54b38f69a3f2416b2fd9d8f378c (diff) | |
Merge branch '2023-12-20-assorted-general-updates' into next
- Assorted fixes around the tree
Diffstat (limited to 'common')
| -rw-r--r-- | common/cli_readline.c | 26 | ||||
| -rw-r--r-- | common/command.c | 3 |
2 files changed, 18 insertions, 11 deletions
diff --git a/common/cli_readline.c b/common/cli_readline.c index 06b8d465044..85453beed76 100644 --- a/common/cli_readline.c +++ b/common/cli_readline.c @@ -12,6 +12,8 @@ #include <bootretry.h> #include <cli.h> #include <command.h> +#include <hang.h> +#include <malloc.h> #include <time.h> #include <watchdog.h> #include <asm/global_data.h> @@ -85,7 +87,6 @@ static int hist_cur = -1; static unsigned hist_num; static char *hist_list[HIST_MAX]; -static char hist_lines[HIST_MAX][HIST_SIZE + 1]; /* Save room for NULL */ #define add_idx_minus_one() ((hist_add_idx == 0) ? hist_max : hist_add_idx-1) @@ -97,8 +98,9 @@ static void getcmd_putchars(int count, int ch) getcmd_putch(ch); } -static void hist_init(void) +static int hist_init(void) { + unsigned char *hist; int i; hist_max = 0; @@ -106,10 +108,14 @@ static void hist_init(void) hist_cur = -1; hist_num = 0; - for (i = 0; i < HIST_MAX; i++) { - hist_list[i] = hist_lines[i]; - hist_list[i][0] = '\0'; - } + hist = calloc(HIST_MAX, HIST_SIZE + 1); + if (!hist) + return -ENOMEM; + + for (i = 0; i < HIST_MAX; i++) + hist_list[i] = hist + (i * (HIST_SIZE + 1)); + + return 0; } static void cread_add_to_hist(char *line) @@ -493,8 +499,9 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len, #else /* !CONFIG_CMDLINE_EDITING */ -static inline void hist_init(void) +static inline int hist_init(void) { + return 0; } static int cread_line(const char *const prompt, char *buf, unsigned int *len, @@ -643,8 +650,9 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer, */ if (IS_ENABLED(CONFIG_CMDLINE_EDITING) && (gd->flags & GD_FLG_RELOC)) { if (!initted) { - hist_init(); - initted = 1; + rc = hist_init(); + if (rc == 0) + initted = 1; } if (prompt) diff --git a/common/command.c b/common/command.c index 846e16e2ada..7821c273dae 100644 --- a/common/command.c +++ b/common/command.c @@ -355,10 +355,9 @@ static int find_common_prefix(char *const argv[]) return len; } -static char tmp_buf[CONFIG_SYS_CBSIZE + 1]; /* copy of console I/O buffer */ - int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp) { + char tmp_buf[CONFIG_SYS_CBSIZE + 1]; /* copy of console I/O buffer */ int n = *np, col = *colp; char *argv[CONFIG_SYS_MAXARGS + 1]; /* NULL terminated */ char *cmdv[20]; |
