libbb: move common code into run_applet_and_exit
authorRon Yorston <rmy@pobox.com>
Tue, 7 Jun 2016 11:12:07 +0000 (12:12 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 19 Jun 2016 13:16:27 +0000 (15:16 +0200)
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>
include/libbb.h
libbb/appletlib.c

index a21f4204a426bd61408ae5c1ae36bb0be526a9cc..e39021eb19a13337ad5228524c4576a438a38dc3 100644 (file)
@@ -1239,8 +1239,6 @@ const struct hwtype *get_hwntype(int type) FAST_FUNC;
 
 #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
 
index b6fe1dad2af10e85e5852f2998765b2dd7ae797d..480bf50fc333170db24cf98a30073409d55f4d13 100644 (file)
@@ -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 @@ static int busybox_main(char **argv)
         * "#!/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 @@ void FAST_FUNC run_applet_no_and_exit(int applet_no, char **argv)
        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 @@ void FAST_FUNC run_applet_and_exit(const char *name, char **argv)
        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 @@ int main(int argc UNUSED_PARAM, char **argv)
        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
 }