diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-10-11 10:06:26 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-10-11 10:06:26 +0000 |
commit | 15cb4a42724e480734157a55921ba435ed1413fc (patch) | |
tree | 81648e3f71bad18e88e19cb8efe094a10d94ab15 | |
parent | 9b49a5ed8551e46892af3f676e5d96d21b540e3c (diff) | |
download | busybox-w32-15cb4a42724e480734157a55921ba435ed1413fc.tar.gz busybox-w32-15cb4a42724e480734157a55921ba435ed1413fc.tar.bz2 busybox-w32-15cb4a42724e480734157a55921ba435ed1413fc.zip |
fix a problem with two different applet_name's
-rw-r--r-- | include/busybox.h | 2 | ||||
-rw-r--r-- | libbb/appletlib.c | 5 | ||||
-rwxr-xr-x | scripts/trylink | 6 |
3 files changed, 6 insertions, 7 deletions
diff --git a/include/busybox.h b/include/busybox.h index 5c01eca8d..7ef36901a 100644 --- a/include/busybox.h +++ b/include/busybox.h | |||
@@ -56,7 +56,7 @@ extern const unsigned short NUM_APPLETS; | |||
56 | /* Length of these names has effect on size of libbusybox | 56 | /* Length of these names has effect on size of libbusybox |
57 | * and "individual" binaries. Keep them short. | 57 | * and "individual" binaries. Keep them short. |
58 | */ | 58 | */ |
59 | void lbb_prepare(char **argv) MAIN_EXTERNALLY_VISIBLE; | 59 | void lbb_prepare(const char *applet, char **argv) MAIN_EXTERNALLY_VISIBLE; |
60 | #if ENABLE_BUILD_LIBBUSYBOX | 60 | #if ENABLE_BUILD_LIBBUSYBOX |
61 | #if ENABLE_FEATURE_SHARED_BUSYBOX | 61 | #if ENABLE_FEATURE_SHARED_BUSYBOX |
62 | int lbb_main(int argc, char **argv) EXTERNALLY_VISIBLE; | 62 | int lbb_main(int argc, char **argv) EXTERNALLY_VISIBLE; |
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 953f1e7e5..8b1ed8000 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -127,11 +127,12 @@ const struct bb_applet *find_applet_by_name(const char *name) | |||
127 | int *const bb_errno __attribute__ ((section (".data"))); | 127 | int *const bb_errno __attribute__ ((section (".data"))); |
128 | #endif | 128 | #endif |
129 | 129 | ||
130 | void lbb_prepare(char **argv) | 130 | void lbb_prepare(const char *applet, char **argv) |
131 | { | 131 | { |
132 | #ifdef __GLIBC__ | 132 | #ifdef __GLIBC__ |
133 | (*(int **)&bb_errno) = __errno_location(); | 133 | (*(int **)&bb_errno) = __errno_location(); |
134 | #endif | 134 | #endif |
135 | applet_name = applet; | ||
135 | 136 | ||
136 | /* Set locale for everybody except 'init' */ | 137 | /* Set locale for everybody except 'init' */ |
137 | if (ENABLE_LOCALE_SUPPORT && getpid() != 1) | 138 | if (ENABLE_LOCALE_SUPPORT && getpid() != 1) |
@@ -666,7 +667,7 @@ int lbb_main(int argc, char **argv) | |||
666 | int main(int argc, char **argv) | 667 | int main(int argc, char **argv) |
667 | #endif | 668 | #endif |
668 | { | 669 | { |
669 | lbb_prepare(argv); | 670 | lbb_prepare("busybox", argv); |
670 | 671 | ||
671 | #if !BB_MMU | 672 | #if !BB_MMU |
672 | /* NOMMU re-exec trick sets high-order bit in first byte of name */ | 673 | /* NOMMU re-exec trick sets high-order bit in first byte of name */ |
diff --git a/scripts/trylink b/scripts/trylink index 25629aa1a..7fe262baa 100755 --- a/scripts/trylink +++ b/scripts/trylink | |||
@@ -220,14 +220,12 @@ if test "$CONFIG_FEATURE_INDIVIDUAL" = y; then | |||
220 | while read name main junk; do | 220 | while read name main junk; do |
221 | 221 | ||
222 | echo "\ | 222 | echo "\ |
223 | void lbb_prepare(char **argv); | 223 | void lbb_prepare(const char *applet, char **argv); |
224 | int $main(int argc, char **argv); | 224 | int $main(int argc, char **argv); |
225 | 225 | ||
226 | const char *applet_name = \"$name\"; | ||
227 | |||
228 | int main(int argc, char **argv) | 226 | int main(int argc, char **argv) |
229 | { | 227 | { |
230 | lbb_prepare(argv); | 228 | lbb_prepare(\"$name\", argv); |
231 | return $main(argc, argv); | 229 | return $main(argc, argv); |
232 | } | 230 | } |
233 | " >"$sharedlib_dir/applet.c" | 231 | " >"$sharedlib_dir/applet.c" |