aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/shell/ash.c b/shell/ash.c
index d4ee4c93e..055f5ff73 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,31 @@ 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 for (struct tblentry *cmdp = cmdtable[n]; cmdp; cmdp = cmdp->next) {
10297 if (cmdp->cmdtype == CMDFUNCTION && i-- <= 0)
10298 return cmdp->cmdname;
10299 }
10300 }
10301
10302# if ENABLE_ASH_ALIAS
10303 for (n = 0; n < ATABSIZE; n++) {
10304 for(struct alias *ap = atab[n]; ap; ap = ap->next) {
10305 if (i-- <= 0)
10306 return ap->name;
10307 }
10308 }
10309#endif
10310
10311 return NULL;
10290} 10312}
10291#endif 10313#endif
10292 10314