diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-03 21:31:16 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-03 21:31:16 +0200 |
commit | d4e4fdb5ce5ccc067b3d35d877f7a7d978869517 (patch) | |
tree | bac3e4a55fa72db0c67d377b90869b4d63e8c3c9 /libbb/appletlib.c | |
parent | 2e989ef232e35750df573898077dd356003705b2 (diff) | |
download | busybox-w32-d4e4fdb5ce5ccc067b3d35d877f7a7d978869517.tar.gz busybox-w32-d4e4fdb5ce5ccc067b3d35d877f7a7d978869517.tar.bz2 busybox-w32-d4e4fdb5ce5ccc067b3d35d877f7a7d978869517.zip |
fixes for bugs found by make_single_applets.sh
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/appletlib.c')
-rw-r--r-- | libbb/appletlib.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 7f0d62060..2dea2b43a 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -78,6 +78,17 @@ | |||
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | 80 | ||
81 | unsigned FAST_FUNC string_array_len(char **argv) | ||
82 | { | ||
83 | char **start = argv; | ||
84 | |||
85 | while (*argv) | ||
86 | argv++; | ||
87 | |||
88 | return argv - start; | ||
89 | } | ||
90 | |||
91 | |||
81 | #if ENABLE_SHOW_USAGE && !ENABLE_FEATURE_COMPRESS_USAGE | 92 | #if ENABLE_SHOW_USAGE && !ENABLE_FEATURE_COMPRESS_USAGE |
82 | static const char usage_messages[] ALIGN1 = UNPACKED_USAGE; | 93 | static const char usage_messages[] ALIGN1 = UNPACKED_USAGE; |
83 | #else | 94 | #else |
@@ -868,10 +879,7 @@ static int busybox_main(char **argv) | |||
868 | # if NUM_APPLETS > 0 | 879 | # if NUM_APPLETS > 0 |
869 | void FAST_FUNC run_applet_no_and_exit(int applet_no, char **argv) | 880 | void FAST_FUNC run_applet_no_and_exit(int applet_no, char **argv) |
870 | { | 881 | { |
871 | int argc = 1; | 882 | int argc = string_array_len(argv); |
872 | |||
873 | while (argv[argc]) | ||
874 | argc++; | ||
875 | 883 | ||
876 | /* Reinit some shared global data */ | 884 | /* Reinit some shared global data */ |
877 | xfunc_error_retval = EXIT_FAILURE; | 885 | xfunc_error_retval = EXIT_FAILURE; |
@@ -993,7 +1001,11 @@ int main(int argc UNUSED_PARAM, char **argv) | |||
993 | } | 1001 | } |
994 | /* applet_names in this case is just "applet\0\0" */ | 1002 | /* applet_names in this case is just "applet\0\0" */ |
995 | lbb_prepare(applet_names IF_FEATURE_INDIVIDUAL(, argv)); | 1003 | lbb_prepare(applet_names IF_FEATURE_INDIVIDUAL(, argv)); |
1004 | # if ENABLE_BUILD_LIBBUSYBOX | ||
1005 | return SINGLE_APPLET_MAIN(string_array_len(argv), argv); | ||
1006 | # else | ||
996 | return SINGLE_APPLET_MAIN(argc, argv); | 1007 | return SINGLE_APPLET_MAIN(argc, argv); |
1008 | # endif | ||
997 | 1009 | ||
998 | #elif !ENABLE_BUSYBOX && NUM_APPLETS == 0 | 1010 | #elif !ENABLE_BUSYBOX && NUM_APPLETS == 0 |
999 | 1011 | ||