BUG/MEDIUM: init: don't use environment locale
This patch removes setlocale from the main function. It was introduced
by commit 379d9c7 ("MEDIUM: init: allow directory as argument of -f")
in 1.7-dev a few commits ago after a discussion on the mailing list.
Some regex may have different behaviours depending on the
locale. Some LUA scripts may change their behaviour too
(http://lua-users.org/wiki/LuaLocales).
Without this patch (haproxy is using setlocale) :
$ cat locale.cfg
defaults
mode http
frontend test
bind :9000
mode http
use_backend testbk if { hdr_reg(X-Test) ^\w+$ }
backend testbk
mode http
server s 127.0.0.1:80
$ LANG=fr_FR.UTF-8 ./haproxy -f locale.cfg
$ curl -i -H "X-Test: échec" localhost:9000
HTTP/1.1 200 OK
...
$ LANG=C ./haproxy -f locale.cfg
$ curl -i -H "X-Test: échec" localhost:9000
HTTP/1.0 503 Service Unavailable
...
diff --git a/doc/haproxy.1 b/doc/haproxy.1
index cc9c702..73c2aee 100644
--- a/doc/haproxy.1
+++ b/doc/haproxy.1
@@ -35,8 +35,8 @@
.TP
\fB\-f <configuration file|dir>\fP
Specify configuration file or directory path. If the argument is a directory
-the files (and only files) it containes are added in lexical order (respecting
-LC_COLLATE) ; only non hidden files with ".cfg" extension are added.
+the files (and only files) it containes are added in lexical order (using
+LC_COLLATE=C) ; only non hidden files with ".cfg" extension are added.
.TP
\fB\-L <name>\fP
diff --git a/doc/management.txt b/doc/management.txt
index 4f0af10..119c3fa 100644
--- a/doc/management.txt
+++ b/doc/management.txt
@@ -136,7 +136,7 @@
-f <cfgfile|cfgdir> : adds <cfgfile> to the list of configuration files to be
loaded. If <cfgdir> is a directory, all the files (and only files) it
- containes are added in lexical order (respecting LC_COLLATE) to the list of
+ containes are added in lexical order (using LC_COLLATE=C) to the list of
configuration files to be loaded ; only files with ".cfg" extension are
added, only non hidden files (not prefixed with ".") are added.
Configuration files are loaded and processed in their declaration order.
diff --git a/src/haproxy.c b/src/haproxy.c
index 582ad82..c6d1505 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -32,7 +32,6 @@
#include <string.h>
#include <ctype.h>
#include <dirent.h>
-#include <locale.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
@@ -1752,9 +1751,6 @@
char errmsg[100];
int pidfd = -1;
- /* get the locale from the environment variables */
- setlocale(LC_ALL, "");
-
init(argc, argv);
signal_register_fct(SIGQUIT, dump, SIGQUIT);
signal_register_fct(SIGUSR1, sig_soft_stop, SIGUSR1);