aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ash.c32
-rw-r--r--shell/hush.c14
2 files changed, 40 insertions, 6 deletions
diff --git a/shell/ash.c b/shell/ash.c
index d4ee4c93e..d2c5c5d50 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -9732,7 +9732,7 @@ evalpipe(union node *n, int flags)
9732 9732
9733/* setinteractive needs this forward reference */ 9733/* setinteractive needs this forward reference */
9734#if ENABLE_FEATURE_TAB_COMPLETION 9734#if ENABLE_FEATURE_TAB_COMPLETION
9735static const char *get_builtin_name(int i) FAST_FUNC; 9735static const char *ash_command_name(int i) FAST_FUNC;
9736#endif 9736#endif
9737 9737
9738/* 9738/*
@@ -9769,7 +9769,7 @@ setinteractive(int on)
9769 if (!line_input_state) { 9769 if (!line_input_state) {
9770 line_input_state = new_line_input_t(FOR_SHELL | WITH_PATH_LOOKUP); 9770 line_input_state = new_line_input_t(FOR_SHELL | WITH_PATH_LOOKUP);
9771# if ENABLE_FEATURE_TAB_COMPLETION 9771# if ENABLE_FEATURE_TAB_COMPLETION
9772 line_input_state->get_exe_name = get_builtin_name; 9772 line_input_state->get_exe_name = ash_command_name;
9773# endif 9773# endif
9774# if EDITING_HAS_sh_get_var 9774# if EDITING_HAS_sh_get_var
9775 line_input_state->sh_get_var = lookupvar; 9775 line_input_state->sh_get_var = lookupvar;
@@ -10284,9 +10284,33 @@ find_builtin(const char *name)
10284 10284
10285#if ENABLE_FEATURE_TAB_COMPLETION 10285#if ENABLE_FEATURE_TAB_COMPLETION
10286static const char * FAST_FUNC 10286static const char * FAST_FUNC
10287get_builtin_name(int i) 10287ash_command_name(int i)
10288{ 10288{
10289 return /*i >= 0 &&*/ i < ARRAY_SIZE(builtintab) ? builtintab[i].name + 1 : NULL; 10289 int n;
10290
10291 if (/*i >= 0 &&*/ i < ARRAY_SIZE(builtintab))
10292 return builtintab[i].name + 1;
10293 i -= ARRAY_SIZE(builtintab);
10294
10295 for (n = 0; n < CMDTABLESIZE; n++) {
10296 struct tblentry *cmdp;
10297 for (cmdp = cmdtable[n]; cmdp; cmdp = cmdp->next) {
10298 if (cmdp->cmdtype == CMDFUNCTION && --i < 0)
10299 return cmdp->cmdname;
10300 }
10301 }
10302
10303# if ENABLE_ASH_ALIAS
10304 for (n = 0; n < ATABSIZE; n++) {
10305 struct alias *ap;
10306 for (ap = atab[n]; ap; ap = ap->next) {
10307 if (--i < 0)
10308 return ap->name;
10309 }
10310 }
10311#endif
10312
10313 return NULL;
10290} 10314}
10291#endif 10315#endif
10292 10316
diff --git a/shell/hush.c b/shell/hush.c
index 202c0993a..f8951d084 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -8220,7 +8220,7 @@ static const struct built_in_command *find_builtin(const char *name)
8220} 8220}
8221 8221
8222#if ENABLE_HUSH_JOB && ENABLE_FEATURE_TAB_COMPLETION 8222#if ENABLE_HUSH_JOB && ENABLE_FEATURE_TAB_COMPLETION
8223static const char * FAST_FUNC get_builtin_name(int i) 8223static const char * FAST_FUNC hush_command_name(int i)
8224{ 8224{
8225 if (/*i >= 0 && */ i < ARRAY_SIZE(bltins1)) { 8225 if (/*i >= 0 && */ i < ARRAY_SIZE(bltins1)) {
8226 return bltins1[i].b_cmd; 8226 return bltins1[i].b_cmd;
@@ -8229,6 +8229,16 @@ static const char * FAST_FUNC get_builtin_name(int i)
8229 if (i < ARRAY_SIZE(bltins2)) { 8229 if (i < ARRAY_SIZE(bltins2)) {
8230 return bltins2[i].b_cmd; 8230 return bltins2[i].b_cmd;
8231 } 8231 }
8232# if ENABLE_HUSH_FUNCTIONS
8233 {
8234 struct function *funcp;
8235 i -= ARRAY_SIZE(bltins2);
8236 for (funcp = G.top_func; funcp; funcp = funcp->next) {
8237 if (--i < 0)
8238 return funcp->name;
8239 }
8240 }
8241# endif
8232 return NULL; 8242 return NULL;
8233} 8243}
8234#endif 8244#endif
@@ -10716,7 +10726,7 @@ int hush_main(int argc, char **argv)
10716# if ENABLE_FEATURE_EDITING 10726# if ENABLE_FEATURE_EDITING
10717 G.line_input_state = new_line_input_t(FOR_SHELL); 10727 G.line_input_state = new_line_input_t(FOR_SHELL);
10718# if ENABLE_FEATURE_TAB_COMPLETION 10728# if ENABLE_FEATURE_TAB_COMPLETION
10719 G.line_input_state->get_exe_name = get_builtin_name; 10729 G.line_input_state->get_exe_name = hush_command_name;
10720# endif 10730# endif
10721# if EDITING_HAS_sh_get_var 10731# if EDITING_HAS_sh_get_var
10722 G.line_input_state->sh_get_var = get_local_var_value; 10732 G.line_input_state->sh_get_var = get_local_var_value;