From 366cf2abfbcf26931052cad297e35f7eee854936 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Sun, 28 Apr 2024 14:08:12 +0100 Subject: libbb: make default history size configurable Allow the default history size (used if HISTFILESIZE isn't set) to be configured at build time. This may be less than or equal to the standard history size. (GitHub issue #411) --- configs/mingw32_defconfig | 1 + configs/mingw64_defconfig | 1 + configs/mingw64a_defconfig | 1 + configs/mingw64u_defconfig | 1 + include/libbb.h | 5 +++++ libbb/Config.src | 10 ++++++++++ libbb/lineedit.c | 4 ++-- 7 files changed, 21 insertions(+), 2 deletions(-) diff --git a/configs/mingw32_defconfig b/configs/mingw32_defconfig index 8624cd105..eca0dc7fc 100644 --- a/configs/mingw32_defconfig +++ b/configs/mingw32_defconfig @@ -135,6 +135,7 @@ CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_VI=y CONFIG_FEATURE_EDITING_HISTORY=1023 +CONFIG_FEATURE_EDITING_HISTORY_DEFAULT=384 CONFIG_FEATURE_EDITING_SAVEHISTORY=y # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set CONFIG_FEATURE_REVERSE_SEARCH=y diff --git a/configs/mingw64_defconfig b/configs/mingw64_defconfig index b8234f894..d71d2abf9 100644 --- a/configs/mingw64_defconfig +++ b/configs/mingw64_defconfig @@ -135,6 +135,7 @@ CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_VI=y CONFIG_FEATURE_EDITING_HISTORY=1023 +CONFIG_FEATURE_EDITING_HISTORY_DEFAULT=384 CONFIG_FEATURE_EDITING_SAVEHISTORY=y # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set CONFIG_FEATURE_REVERSE_SEARCH=y diff --git a/configs/mingw64a_defconfig b/configs/mingw64a_defconfig index 654754c06..4d554ec75 100644 --- a/configs/mingw64a_defconfig +++ b/configs/mingw64a_defconfig @@ -135,6 +135,7 @@ CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_VI=y CONFIG_FEATURE_EDITING_HISTORY=1023 +CONFIG_FEATURE_EDITING_HISTORY_DEFAULT=384 CONFIG_FEATURE_EDITING_SAVEHISTORY=y # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set CONFIG_FEATURE_REVERSE_SEARCH=y diff --git a/configs/mingw64u_defconfig b/configs/mingw64u_defconfig index f02389095..977c6966d 100644 --- a/configs/mingw64u_defconfig +++ b/configs/mingw64u_defconfig @@ -135,6 +135,7 @@ CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_VI=y CONFIG_FEATURE_EDITING_HISTORY=1023 +CONFIG_FEATURE_EDITING_HISTORY_DEFAULT=384 CONFIG_FEATURE_EDITING_SAVEHISTORY=y # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set CONFIG_FEATURE_REVERSE_SEARCH=y diff --git a/include/libbb.h b/include/libbb.h index 76a107521..a7d31ed0c 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -2015,6 +2015,11 @@ unsigned size_from_HISTFILESIZE(const char *hp) FAST_FUNC; # else # define MAX_HISTORY 0 # endif +# if defined CONFIG_FEATURE_EDITING_HISTORY_DEFAULT && CONFIG_FEATURE_EDITING_HISTORY_DEFAULT > 0 +# define DEFAULT_HISTORY (CONFIG_FEATURE_EDITING_HISTORY_DEFAULT + 0) +# else +# define DEFAULT_HISTORY 0 +# endif typedef const char *get_exe_name_t(int i) FAST_FUNC; typedef const char *sh_get_var_t(const char *name) FAST_FUNC; typedef int sh_accept_glob_t(const char *name) FAST_FUNC; diff --git a/libbb/Config.src b/libbb/Config.src index b980f19a9..61b4601d6 100644 --- a/libbb/Config.src +++ b/libbb/Config.src @@ -188,6 +188,16 @@ config FEATURE_EDITING_HISTORY help Specify command history size (0 - disable). +config FEATURE_EDITING_HISTORY_DEFAULT + int "Default history size" + range 0 FEATURE_EDITING_HISTORY + default 255 + depends on PLATFORM_MINGW32 && FEATURE_EDITING && FEATURE_SH_HISTFILESIZE + help + Specify default command history size. This may be smaller than + FEATURE_EDITING_HISTORY, in which case the user may increase + the history size by setting HISTFILESIZE. + config FEATURE_EDITING_SAVEHISTORY bool "History saving" default y diff --git a/libbb/lineedit.c b/libbb/lineedit.c index 1a095b657..811e3e475 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c @@ -1585,8 +1585,8 @@ line_input_t* FAST_FUNC new_line_input_t(int flags) unsigned FAST_FUNC size_from_HISTFILESIZE(const char *hp) { -# if ENABLE_PLATFORM_MINGW32 && MAX_HISTORY > 511 - int size = 384; +# if ENABLE_PLATFORM_MINGW32 && DEFAULT_HISTORY > 0 && DEFAULT_HISTORY <= MAX_HISTORY + int size = DEFAULT_HISTORY; # else int size = MAX_HISTORY; # endif -- cgit v1.2.3-55-g6feb