summaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-01-21 16:01:58 +0000
committerDenys Vlasenko <vda.linux@googlemail.com>2020-01-29 15:23:17 +0100
commit9e2a5668fd38db169d9d91b13089a99df4c9bd37 (patch)
tree3d823cd22bf7627fbb5ef90fdcfae794c1f94ab2 /shell/ash.c
parent1ff7002b1d229c678fdffebec602fb4c54439a31 (diff)
downloadbusybox-w32-9e2a5668fd38db169d9d91b13089a99df4c9bd37.tar.gz
busybox-w32-9e2a5668fd38db169d9d91b13089a99df4c9bd37.tar.bz2
busybox-w32-9e2a5668fd38db169d9d91b13089a99df4c9bd37.zip
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 <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c
index d6040f47e..fb4028219 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -9523,6 +9523,11 @@ evalpipe(union node *n, int flags)
9523 return status; 9523 return status;
9524} 9524}
9525 9525
9526/* setinteractive needs this forward reference */
9527#if EDITING_HAS_get_exe_name
9528static const char *get_builtin_name(int i) FAST_FUNC;
9529#endif
9530
9526/* 9531/*
9527 * Controls whether the shell is interactive or not. 9532 * Controls whether the shell is interactive or not.
9528 */ 9533 */
@@ -9554,8 +9559,12 @@ setinteractive(int on)
9554 } 9559 }
9555#endif 9560#endif
9556#if ENABLE_FEATURE_EDITING 9561#if ENABLE_FEATURE_EDITING
9557 if (!line_input_state) 9562 if (!line_input_state) {
9558 line_input_state = new_line_input_t(FOR_SHELL | WITH_PATH_LOOKUP); 9563 line_input_state = new_line_input_t(FOR_SHELL | WITH_PATH_LOOKUP);
9564# if EDITING_HAS_get_exe_name
9565 line_input_state->get_exe_name = get_builtin_name;
9566# endif
9567 }
9559#endif 9568#endif
9560 } 9569 }
9561} 9570}
@@ -10023,6 +10032,14 @@ find_builtin(const char *name)
10023 return bp; 10032 return bp;
10024} 10033}
10025 10034
10035#if EDITING_HAS_get_exe_name
10036static const char * FAST_FUNC
10037get_builtin_name(int i)
10038{
10039 return /*i >= 0 &&*/ i < ARRAY_SIZE(builtintab) ? builtintab[i].name + 1 : NULL;
10040}
10041#endif
10042
10026/* 10043/*
10027 * Execute a simple command. 10044 * Execute a simple command.
10028 */ 10045 */