shell: make standalone shell tab-complete "busybox"
No binary (build failed)
—
(log yok)
| @@ -760,11 +760,26 @@ static void install_links(const char *busybox UNUSED_PARAM, | |
| } | |
| # endif | |
| - | # if ENABLE_BUSYBOX |
| static void run_applet_and_exit(const char *name, char **argv) NORETURN; | |
| - | /* If we were called as "busybox..." */ |
| - | static int busybox_main(char **argv) |
| + | # if ENABLE_BUSYBOX |
| + | # if ENABLE_FEATURE_SH_STANDALONE && ENABLE_FEATURE_TAB_COMPLETION |
| + | /* |
| + | * Insert "busybox" into applet table as well. |
| + | * This makes standalone shell tab-complete this name too. |
| + | * (Otherwise having "busybox" in applet table is not necessary, |
| + | * there is other code which routes "busyboxANY_SUFFIX" name |
| + | * to busybox_main()). |
| + | */ |
| + | //usage:#define busybox_trivial_usage NOUSAGE_STR |
| + | //usage:#define busybox_full_usage "" |
| + | //applet:IF_BUSYBOX(IF_FEATURE_SH_STANDALONE(IF_FEATURE_TAB_COMPLETION(APPLET(busybox, BB_DIR_BIN, BB_SUID_MAYBE)))) |
| + | int busybox_main(int argc, char *argv[]) MAIN_EXTERNALLY_VISIBLE; |
| + | # else |
| + | # define busybox_main(argc,argv) busybox_main(argv) |
| + | static |
| + | # endif |
| + | int busybox_main(int argc UNUSED_PARAM, char **argv) |
| { | |
| if (!argv[1]) { | |
| /* Called without arguments */ | |
| @@ -937,7 +952,7 @@ static NORETURN void run_applet_and_exit(const char *name, char **argv) | |
| { | |
| # if ENABLE_BUSYBOX | |
| if (is_prefixed_with(name, "busybox")) | |
| - | exit(busybox_main(argv)); |
| + | exit(busybox_main(/*unused:*/ 0, argv)); |
| # endif | |
| # if NUM_APPLETS > 0 | |
| /* find_applet_by_name() search is more expensive, so goes second */ | |
| @@ -776,7 +776,7 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type) | |
| } | |
| pf_len = strlen(pfind); | |
| - | #if ENABLE_FEATURE_SH_STANDALONE && NUM_APPLETS != 1 |
| + | # if ENABLE_FEATURE_SH_STANDALONE && NUM_APPLETS != 1 |
| if (type == FIND_EXE_ONLY && !dirbuf) { | |
| const char *p = applet_names; | |
| @@ -787,7 +787,7 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type) | |
| continue; | |
| } | |
| } | |
| - | #endif |
| + | # endif |
| for (i = 0; i < npaths; i++) { | |
| DIR *dir; | |