diff options
-rw-r--r-- | shell/ash.c | 32 | ||||
-rw-r--r-- | shell/hush.c | 14 |
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 |
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,33 @@ 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 | 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 |
8223 | static const char * FAST_FUNC get_builtin_name(int i) | 8223 | static 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; |