aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-12-16 11:14:08 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-16 11:14:08 +0100
commita97a795dcb41943943b8ecfe039e23673365af55 (patch)
tree9d5ca60480403678d27be2c922ce3350fef97426 /libbb
parent1d180cd7493f0a88fa39229cddcb30a0e44ade4c (diff)
downloadbusybox-a97a795dcb41943943b8ecfe039e23673365af55.tar.gz
lineedit: disable completion and fancy prompts if no shells are selected
function old new delta get_previous_history 51 56 +5 get_next_history 47 52 +5 null_str 1 - -1 beep 10 - -10 bb_msg_unknown 10 - -10 bb_internal_setpwent 24 - -24 remove_chunk 30 - -30 goto_new_line 33 - -33 bb_internal_endpwent 36 - -36 deinit_S 51 - -51 free_tab_completion_data 54 - -54 read_line_input 3171 3114 -57 rewind 68 - -68 add_match 70 - -70 complete_username 77 - -77 quote_special_chars 78 - -78 build_match_prefix 557 - -557 complete_cmd_dir_file 697 - -697 parse_and_put_prompt 823 53 -770 input_tab 926 - -926 ------------------------------------------------------------------------------ (add/remove: 0/17 grow/shrink: 2/2 up/down: 10/-3549) Total: -3539 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/lineedit.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 0c48e8179..c3b5738e2 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -57,12 +57,23 @@
#if ENABLE_FEATURE_EDITING
+#if !ENABLE_SHELL_ASH && !ENABLE_SHELL_HUSH
+/* so far only shells use these features */
+# undef ENABLE_FEATURE_EDITING_FANCY_PROMPT
+# undef ENABLE_FEATURE_TAB_COMPLETION
+# undef ENABLE_FEATURE_USERNAME_COMPLETION
+# define ENABLE_FEATURE_EDITING_FANCY_PROMPT 0
+# define ENABLE_FEATURE_TAB_COMPLETION 0
+# define ENABLE_FEATURE_USERNAME_COMPLETION 0
+#endif
+
+
#define ENABLE_USERNAME_OR_HOMEDIR \
(ENABLE_FEATURE_USERNAME_COMPLETION || ENABLE_FEATURE_EDITING_FANCY_PROMPT)
-#define IF_USERNAME_OR_HOMEDIR(...)
#if ENABLE_USERNAME_OR_HOMEDIR
-# undef IF_USERNAME_OR_HOMEDIR
# define IF_USERNAME_OR_HOMEDIR(...) __VA_ARGS__
+#else
+# define IF_USERNAME_OR_HOMEDIR(...) /*nothing*/
#endif
@@ -743,11 +754,11 @@ static unsigned path_parse(char ***p)
char *tmp;
char **res;
-#if EDITING_HAS_path_lookup
+# if EDITING_HAS_path_lookup
if (state->flags & WITH_PATH_LOOKUP)
pth = state->path_lookup;
else
-#endif
+# endif
pth = getenv("PATH");
/* PATH="" or PATH=":"? */
@@ -1885,9 +1896,7 @@ static void parse_and_put_prompt(const char *prmt_ptr)
{
int prmt_size = 0;
char *prmt_mem_ptr = xzalloc(1);
-# if ENABLE_USERNAME_OR_HOMEDIR
char *cwd_buf = NULL;
-# endif
char flg_not_length = '[';
char cbuf[2];
@@ -1954,11 +1963,9 @@ static void parse_and_put_prompt(const char *prmt_ptr)
c = *prmt_ptr++;
switch (c) {
-# if ENABLE_USERNAME_OR_HOMEDIR
case 'u':
pbuf = user_buf ? user_buf : (char*)"";
break;
-# endif
case 'H':
case 'h':
pbuf = free_me = safe_gethostname();
@@ -1976,7 +1983,6 @@ static void parse_and_put_prompt(const char *prmt_ptr)
strftime_HHMMSS(timebuf, sizeof(timebuf), NULL)[-3] = '\0';
pbuf = timebuf;
break;
-# if ENABLE_USERNAME_OR_HOMEDIR
case 'w': /* current dir */
case 'W': /* basename of cur dir */
if (!cwd_buf) {
@@ -2003,7 +2009,6 @@ static void parse_and_put_prompt(const char *prmt_ptr)
if (cp)
pbuf = (char*)cp + 1;
break;
-# endif
// bb_process_escape_sequence does this now:
// case 'e': case 'E': /* \e \E = \033 */
// c = '\033';
@@ -2064,10 +2069,8 @@ static void parse_and_put_prompt(const char *prmt_ptr)
free(free_me);
} /* while */
-# if ENABLE_USERNAME_OR_HOMEDIR
if (cwd_buf != (char *)bb_msg_unknown)
free(cwd_buf);
-# endif
/* see comment (above this function) about multiline prompt redrawing */
cmdedit_prompt = prompt_last_line = prmt_mem_ptr;
prmt_ptr = strrchr(cmdedit_prompt, '\n');
@@ -2075,7 +2078,7 @@ static void parse_and_put_prompt(const char *prmt_ptr)
prompt_last_line = prmt_ptr + 1;
put_prompt();
}
-#endif
+#endif /* FEATURE_EDITING_FANCY_PROMPT */
#if ENABLE_FEATURE_EDITING_WINCH
static void cmdedit_setwidth(void)