From 9e2a5668fd38db169d9d91b13089a99df4c9bd37 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Tue, 21 Jan 2020 16:01:58 +0000 Subject: ash,hush: allow builtins to be tab-completed, closes 7532 function old new delta complete_cmd_dir_file 678 830 +152 get_builtin_name - 35 +35 optschanged 125 132 +7 hush_main 1069 1076 +7 save_command_ps_at_cur_history 76 78 +2 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 4/0 up/down: 203/0) Total: 203 bytes Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- libbb/lineedit.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'libbb') diff --git a/libbb/lineedit.c b/libbb/lineedit.c index b1ec52b88..de236dea0 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c @@ -813,18 +813,29 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type) } pf_len = strlen(pfind); -# if ENABLE_FEATURE_SH_STANDALONE && NUM_APPLETS != 1 if (type == FIND_EXE_ONLY && !dirbuf) { +# if ENABLE_FEATURE_SH_STANDALONE && NUM_APPLETS != 1 const char *p = applet_names; - while (*p) { if (strncmp(pfind, p, pf_len) == 0) add_match(xstrdup(p)); while (*p++ != '\0') continue; } - } # endif +# if EDITING_HAS_get_exe_name + if (state->get_exe_name) { + i = 0; + for (;;) { + const char *b = state->get_exe_name(i++); + if (!b) + break; + if (strncmp(pfind, b, pf_len) == 0) + add_match(xstrdup(b)); + } + } +# endif + } for (i = 0; i < npaths; i++) { DIR *dir; -- cgit v1.2.3