libbb.h now includes ../busybox.h. This way, files in libbb that have
[oweals/busybox.git] / busybox.c
index 5085556d6b55915b8557b608482fc807874b2793..b4939e19d319a5dea4a3fbea596e7317921ec70f 100644 (file)
--- a/busybox.c
+++ b/busybox.c
@@ -5,10 +5,9 @@
 #include <errno.h>
 #include <stdlib.h>
 #include "busybox.h"
-
-#define bb_need_full_version
-#define BB_DECLARE_EXTERN
-#include "messages.c"
+#ifdef BB_LOCALE_SUPPORT
+#include <locale.h>
+#endif
 
 int been_there_done_that = 0; /* Also used in applets.c */
 const char *applet_name;
@@ -60,7 +59,7 @@ static void install_links(const char *busybox, int use_symbolic_links)
 {
        __link_f Link = link;
 
-       char command[256];
+       char *fpc;
        int i;
        int rc;
 
@@ -68,13 +67,13 @@ static void install_links(const char *busybox, int use_symbolic_links)
                Link = symlink;
 
        for (i = 0; applets[i].name != NULL; i++) {
-               sprintf ( command, "%s/%s", 
-                               install_dir[applets[i].location], applets[i].name);
-               rc = Link(busybox, command);
-
-               if (rc) {
-                       perror_msg("%s", command);
+               fpc = concat_path_file(
+                       install_dir[applets[i].location], applets[i].name);
+               rc = Link(busybox, fpc);
+               if (rc!=0 && errno!=EEXIST) {
+                       perror_msg("%s", fpc);
                }
+               free(fpc);
        }
 }
 
@@ -97,6 +96,11 @@ int main(int argc, char **argv)
        }
 #endif
 
+#ifdef BB_LOCALE_SUPPORT
+       if(getpid()!=1) /* Do not set locale for `init' */
+               setlocale(LC_ALL, "");
+#endif
+
        run_applet_by_name(applet_name, argc, argv);
        error_msg_and_die("applet not found");
 }