Set locale environment variables at startup.
authorFlorian Forster <octo@collectd.org>
Mon, 30 Nov 2015 19:27:24 +0000 (20:27 +0100)
committerFlorian Forster <octo@collectd.org>
Mon, 30 Nov 2015 19:30:07 +0000 (20:30 +0100)
Fixes: #1237

src/daemon/collectd.c

index 88c38ac..ad06999 100644 (file)
@@ -302,6 +302,11 @@ static int do_init (void)
 #if HAVE_SETLOCALE
        if (setlocale (LC_NUMERIC, COLLECTD_LOCALE) == NULL)
                WARNING ("setlocale (\"%s\") failed.", COLLECTD_LOCALE);
+
+       /* Update the environment, so that libraries that are calling
+        * setlocale(LC_NUMERIC, "") don't accidentally revert these changes. */
+       unsetenv ("LC_ALL");
+       setenv ("LC_NUMERIC", COLLECTD_LOCALE, /* overwrite = */ 1);
 #endif
 
 #if HAVE_LIBKSTAT