diff options
author | Mark H Weaver <mhw@netris.org> | 2013-03-28 05:09:53 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2013-03-28 05:09:53 -0400 |
commit | 26d148066f9cb20e395a7dc4fefdf2e2ef0b2fb0 (patch) | |
tree | 40f13bc6355adb822bb8cd01fee5bcd9fd5430f9 /libguile/guile.c | |
parent | 8ae26afefee947c71314733c419519fb616bf36d (diff) | |
parent | 579127cce488ce208d62e68e679e34fbbdc17367 (diff) | |
download | guile-26d148066f9cb20e395a7dc4fefdf2e2ef0b2fb0.tar.gz |
Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
configure.ac
libguile/deprecated.c
libguile/deprecated.h
libguile/filesys.h
libguile/fluids.c
libguile/fports.c
libguile/gc.c
libguile/guile.c
libguile/numbers.c
libguile/objcodes.c
libguile/r6rs-ports.c
libguile/smob.c
libguile/socket.c
libguile/threads.h
module/language/scheme/decompile-tree-il.scm
module/language/tree-il/peval.scm
test-suite/tests/syncase.test
Diffstat (limited to 'libguile/guile.c')
-rw-r--r-- | libguile/guile.c | 36 |
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; |