From fcdb00f7359488d197ac3361dfbc49ccdead8b87 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 21 Nov 2006 00:09:37 +0000 Subject: [PATCH] httpd: LC_TIME locale _must_ be POSIX to httpd! We speak over the net! --- applets/busybox.c | 4 ++-- coreutils/cal.c | 7 ++++--- coreutils/ls.c | 2 +- coreutils/wc.c | 2 -- networking/httpd.c | 15 +++++++++++---- shell/ash.c | 1 - shell/lash.c | 5 +---- 7 files changed, 19 insertions(+), 17 deletions(-) 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 @@ int main(int argc, char **argv) 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 @@ int cal_main(int argc, char **argv) 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 @@ static int sortcmp(const void *a, const void *b) } 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 -#include #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 @@ static int sendHeaders(HttpResponseNum responseNum) 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 @@ static int sendCgi(const char *url, # 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 @@ static int sendCgi(const char *url, 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 @@ int httpd_main(int argc, char *argv[]) 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 @@ static void getoptsreset(const char *); #endif #ifdef CONFIG_LOCALE_SUPPORT -#include 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 #include "cmdedit.h" -#ifdef CONFIG_LOCALE_SUPPORT -#include -#endif - #include #define expand_t glob_t @@ -377,6 +373,7 @@ static int builtin_export(struct child_prog *child) #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) -- 2.7.4