httpd: LC_TIME locale _must_ be POSIX to httpd! We speak over the net!
diff --git a/applets/busybox.c b/applets/busybox.c
index 9f2edde..4d59b45 100644
--- a/applets/busybox.c
+++ b/applets/busybox.c
@@ -64,8 +64,8 @@
for (s = applet_name; *s ;)
if (*(s++) == '/') applet_name = s;
- /* Set locale for everybody except `init' */
- if(ENABLE_LOCALE_SUPPORT && getpid() != 1)
+ /* Set locale for everybody except 'init' */
+ if (ENABLE_LOCALE_SUPPORT && getpid() != 1)
setlocale(LC_ALL, "");
run_applet_by_name(applet_name, argc, argv);
diff --git a/coreutils/cal.c b/coreutils/cal.c
index 6f5f0a4..681a88d 100644
--- a/coreutils/cal.c
+++ b/coreutils/cal.c
@@ -87,9 +87,10 @@
char day_headings[28]; /* 28 for julian, 21 for nonjulian */
char buf[40];
-#ifdef CONFIG_LOCALE_SUPPORT
- setlocale(LC_TIME, "");
-#endif
+// Done in busybox.c, ok to remove?
+//#ifdef CONFIG_LOCALE_SUPPORT
+// setlocale(LC_TIME, "");
+//#endif
flags = getopt32(argc, argv, "jy");
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 8a83d75..909f4d5 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -359,7 +359,7 @@
}
if (dif == 0) {
- /* sort by name- may be a tie_breaker for time or size cmp */
+ /* sort by name - may be a tie_breaker for time or size cmp */
if (ENABLE_LOCALE_SUPPORT) dif = strcoll(d1->name, d2->name);
else dif = strcmp(d1->name, d2->name);
}
diff --git a/coreutils/wc.c b/coreutils/wc.c
index 4b76e54..973929e 100644
--- a/coreutils/wc.c
+++ b/coreutils/wc.c
@@ -44,8 +44,6 @@
#include "busybox.h"
#ifdef CONFIG_LOCALE_SUPPORT
-#include <locale.h>
-#include <ctype.h>
#define isspace_given_isprint(c) isspace(c)
#else
#undef isspace
diff --git a/networking/httpd.c b/networking/httpd.c
index afcd089..47d41a1 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -846,9 +846,11 @@
time_t timer = time(0);
char timeStr[80];
int len;
+ enum {
+ numNames = sizeof(httpResponseNames) / sizeof(httpResponseNames[0])
+ };
- for (i = 0;
- i < (sizeof(httpResponseNames)/sizeof(httpResponseNames[0])); i++) {
+ for (i = 0; i < numNames; i++) {
if (httpResponseNames[i].type == responseNum) {
responseString = httpResponseNames[i].name;
infoString = httpResponseNames[i].info;
@@ -1177,7 +1179,7 @@
# error "PIPESIZE >= MAX_MEMORY_BUFF"
#endif
- // There is something to read
+ /* There is something to read */
count = safe_read(inFd, rbuf, PIPESIZE);
if (count == 0)
break; /* closed */
@@ -1197,7 +1199,7 @@
break;
if (DEBUG)
- fprintf(stderr, "cgi read %d bytes\n", count);
+ fprintf(stderr, "cgi read %d bytes: '%.*s'\n", count, count, rbuf);
}
}
}
@@ -1838,6 +1840,11 @@
USE_FEATURE_HTTPD_SETUID(struct bb_uidgid_t ugid;)
USE_FEATURE_HTTPD_AUTH_MD5(const char *pass;)
+#if ENABLE_LOCALE_SUPPORT
+ /* Undo busybox.c: we want to speak English in http (dates etc) */
+ setlocale(LC_TIME, "C");
+#endif
+
config = xzalloc(sizeof(*config));
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
config->realm = "Web Server Authentication";
diff --git a/shell/ash.c b/shell/ash.c
index 3c76397..4fef0f2 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1495,7 +1495,6 @@
#endif
#ifdef CONFIG_LOCALE_SUPPORT
-#include <locale.h>
static void change_lc_all(const char *value);
static void change_lc_ctype(const char *value);
#endif
diff --git a/shell/lash.c b/shell/lash.c
index 4067bc6..472cbdd 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -25,10 +25,6 @@
#include <getopt.h>
#include "cmdedit.h"
-#ifdef CONFIG_LOCALE_SUPPORT
-#include <locale.h>
-#endif
-
#include <glob.h>
#define expand_t glob_t
@@ -377,6 +373,7 @@
#endif
#ifdef CONFIG_LOCALE_SUPPORT
+ // TODO: why getenv? "" would be just as good...
if(strncmp(v, "LC_ALL=", 7)==0)
setlocale(LC_ALL, getenv("LC_ALL"));
if(strncmp(v, "LC_CTYPE=", 9)==0)