libbb: move common code into run_applet_and_exit
Both calls to run_applet_and_exit are followed by the same code
to print an error message and return status 127. Remove this
duplication and make run_applet_and_exit static.
function old new delta
run_applet_and_exit 675 667 -8
main 119 92 -27
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-35) Total: -35 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/include/libbb.h b/include/libbb.h
index a21f420..e39021e 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1239,8 +1239,6 @@
#ifndef BUILD_INDIVIDUAL
extern int find_applet_by_name(const char *name) FAST_FUNC;
-/* Returns only if applet is not found. */
-extern void run_applet_and_exit(const char *name, char **argv) FAST_FUNC;
extern void run_applet_no_and_exit(int a, char **argv) NORETURN FAST_FUNC;
#endif
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index b6fe1da..480bf50 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -52,6 +52,7 @@
#include "usage_compressed.h"
+static void run_applet_and_exit(const char *name, char **argv) NORETURN;
#if ENABLE_SHOW_USAGE && !ENABLE_FEATURE_COMPRESS_USAGE
static const char usage_messages[] ALIGN1 = UNPACKED_USAGE;
@@ -837,12 +838,6 @@
* "#!/bin/busybox"-style wrappers */
applet_name = bb_get_last_path_component_nostrip(argv[0]);
run_applet_and_exit(applet_name, argv);
-
- /*bb_error_msg_and_die("applet not found"); - sucks in printf */
- full_write2_str(applet_name);
- full_write2_str(": applet not found\n");
- /* POSIX: "If a command is not found, the exit status shall be 127" */
- exit(127);
}
# endif
@@ -884,7 +879,7 @@
exit(applet_main[applet_no](argc, argv));
}
-void FAST_FUNC run_applet_and_exit(const char *name, char **argv)
+static NORETURN void run_applet_and_exit(const char *name, char **argv)
{
int applet;
@@ -896,6 +891,12 @@
applet = find_applet_by_name(name);
if (applet >= 0)
run_applet_no_and_exit(applet, argv);
+
+ /*bb_error_msg_and_die("applet not found"); - links in printf */
+ full_write2_str(applet_name);
+ full_write2_str(": applet not found\n");
+ /* POSIX: "If a command is not found, the exit status shall be 127" */
+ exit(127);
}
#endif /* !defined(SINGLE_APPLET_MAIN) */
@@ -968,11 +969,5 @@
parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */
run_applet_and_exit(applet_name, argv);
-
- /*bb_error_msg_and_die("applet not found"); - sucks in printf */
- full_write2_str(applet_name);
- full_write2_str(": applet not found\n");
- /* POSIX: "If a command is not found, the exit status shall be 127" */
- exit(127);
#endif
}