diff options
Diffstat (limited to 'applets')
-rw-r--r-- | applets/busybox.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/applets/busybox.c b/applets/busybox.c index 5085556d6..9db26df27 100644 --- a/applets/busybox.c +++ b/applets/busybox.c @@ -10,6 +10,10 @@ #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 +64,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 +72,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 +101,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"); } |