diff options
Diffstat (limited to 'shell/ash.c')
-rw-r--r-- | shell/ash.c | 30 |
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 |
9735 | static const char *get_builtin_name(int i) FAST_FUNC; | 9735 | static 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 |
10286 | static const char * FAST_FUNC | 10286 | static const char * FAST_FUNC |
10287 | get_builtin_name(int i) | 10287 | ash_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 | ||