summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbb/appletlib.c23
-rw-r--r--libbb/lineedit.c4
2 files changed, 21 insertions, 6 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index b9fbbd1..7a1a7f0 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -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 */
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 2a5d4e7..e5721b0 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -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;