fix a problem with two different applet_name's
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 11 Oct 2007 10:06:26 +0000 (10:06 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 11 Oct 2007 10:06:26 +0000 (10:06 -0000)
include/busybox.h
libbb/appletlib.c
scripts/trylink

index 5c01eca..7ef3690 100644 (file)
@@ -56,7 +56,7 @@ extern const unsigned short NUM_APPLETS;
 /* Length of these names has effect on size of libbusybox
  * and "individual" binaries. Keep them short.
  */
-void lbb_prepare(char **argv) MAIN_EXTERNALLY_VISIBLE;
+void lbb_prepare(const char *applet, char **argv) MAIN_EXTERNALLY_VISIBLE;
 #if ENABLE_BUILD_LIBBUSYBOX
 #if ENABLE_FEATURE_SHARED_BUSYBOX
 int lbb_main(int argc, char **argv) EXTERNALLY_VISIBLE;
index 953f1e7..8b1ed80 100644 (file)
@@ -127,11 +127,12 @@ const struct bb_applet *find_applet_by_name(const char *name)
 int *const bb_errno __attribute__ ((section (".data")));
 #endif
 
-void lbb_prepare(char **argv)
+void lbb_prepare(const char *applet, char **argv)
 {
 #ifdef __GLIBC__
        (*(int **)&bb_errno) = __errno_location();
 #endif
+       applet_name = applet;
 
        /* Set locale for everybody except 'init' */
        if (ENABLE_LOCALE_SUPPORT && getpid() != 1)
@@ -666,7 +667,7 @@ int lbb_main(int argc, char **argv)
 int main(int argc, char **argv)
 #endif
 {
-       lbb_prepare(argv);
+       lbb_prepare("busybox", argv);
 
 #if !BB_MMU
        /* NOMMU re-exec trick sets high-order bit in first byte of name */
index 25629aa..7fe262b 100755 (executable)
@@ -220,14 +220,12 @@ if test "$CONFIG_FEATURE_INDIVIDUAL" = y; then
     while read name main junk; do
 
        echo "\
-void lbb_prepare(char **argv);
+void lbb_prepare(const char *applet, char **argv);
 int $main(int argc, char **argv);
 
-const char *applet_name = \"$name\";
-
 int main(int argc, char **argv)
 {
-       lbb_prepare(argv);
+       lbb_prepare(\"$name\", argv);
        return $main(argc, argv);
 }
 " >"$sharedlib_dir/applet.c"