summaryrefslogtreecommitdiff
path: root/libguile/guile.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/guile.c')
-rw-r--r--libguile/guile.c36
1 files changed, 31 insertions, 5 deletions
diff --git a/libguile/guile.c b/libguile/guile.c
index 133afc43e..03b603eb2 100644
--- a/libguile/guile.c
+++ b/libguile/guile.c
@@ -1,5 +1,5 @@
/* Copyright (C) 1996, 1997, 2000, 2001, 2006, 2008,
- * 2011 Free Software Foundation, Inc.
+ * 2011, 2013 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -66,15 +66,41 @@ inner_main (void *closure SCM_UNUSED, int argc, char **argv)
#endif /* __MINGW32__ */
}
+static int
+get_integer_from_environment (const char *var, int def)
+{
+ char *end = 0;
+ char *val = getenv (var);
+ long res = def;
+ if (!val)
+ return def;
+ res = strtol (val, &end, 10);
+ if (end == val)
+ {
+ fprintf (stderr, "guile: warning: invalid %s: %s\n", var, val);
+ return def;
+ }
+ return res;
+}
+
+static int
+should_install_locale (void)
+{
+ /* If the GUILE_INSTALL_LOCALE environment variable is unset,
+ or set to a nonzero value, we should install the locale via
+ setlocale(). */
+ return get_integer_from_environment ("GUILE_INSTALL_LOCALE", 1);
+}
+
int
main (int argc, char **argv)
{
- /* Install the locale right at the beginning so that string conversion
- for command-line arguments, along with possible error messages, use
- the right locale. See
+ /* If we should install a locale, do it right at the beginning so that
+ string conversion for command-line arguments, along with possible
+ error messages, use the right locale. See
<https://lists.gnu.org/archive/html/guile-devel/2011-11/msg00041.html>
for the rationale. */
- if (setlocale (LC_ALL, "") == NULL)
+ if (should_install_locale () && setlocale (LC_ALL, "") == NULL)
fprintf (stderr, "guile: warning: failed to install locale\n");
scm_install_gmp_memory_functions = 1;