diff options
author | Michael Gran <spk121@yahoo.com> | 2019-02-23 16:33:50 -0800 |
---|---|---|
committer | Michael Gran <spk121@yahoo.com> | 2019-02-23 16:33:50 -0800 |
commit | 92105d13ad1363b511214589b7d62d95304beb17 (patch) | |
tree | dce678d260679afdd928d40fc86a8fd98211f893 | |
parent | 9ba449643d4c2ac1d2174befca7d765af222bcc0 (diff) | |
download | guile-92105d13ad1363b511214589b7d62d95304beb17.tar.gz |
Handle newlib C library's langinfo constant names
The newlib C library (used in Cygwin) has alternative names for
nl_langinfo GNU extensions
* configure.ac (_NL_NUMERIC_GROUPING): new test
* libguile/i18n.c (INT_CURR_SYMBOL, MON_DECIMAL_POINT, MON_THOUSANDS_SEP)
(MON_GROUPING, POSITIVE_SIGN, NEGATIVE_SIGN, GROUPING, INT_FRAC_DIGITS)
(FRAC_DIGITS, P_CS_PRECEDES, P_SEP_BY_SPACE, N_CS_PRECEDES, N_SEP_BY_SPACE)
(P_SIGN_POSN, N_SIGN_POSN, INT_P_CS_PRECEDES, INT_P_SEP_BY_SPACE)
(INT_N_CS_PRECEDES, INT_N_SEP_BY_SPACE, INT_P_SIGN_POSN, INT_N_SIGN_POSN)
[HAVE_DECL__NL_NUMERIC_GROUPING]: map to newlib C constants, when present
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | libguile/i18n.c | 27 |
2 files changed, 30 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index b435229db..9073deba0 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ define(GUILE_CONFIGURE_COPYRIGHT,[[ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, - 2018 Free Software Foundation, Inc. + 2018, 2019 Free Software Foundation, Inc. This file is part of GUILE @@ -796,6 +796,9 @@ AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid \ strcoll strcoll_l strtod_l strtol_l newlocale uselocale utimensat \ sched_getaffinity sched_setaffinity sendfile]) +# The newlib C library uses _NL_ prefixed locale langinfo constants. +AC_CHECK_DECLS([_NL_NUMERIC_GROUPING], [], [], [[#include <langinfo.h>]]) + # Reasons for testing: # netdb.h - not in mingw # sys/param.h - not in mingw diff --git a/libguile/i18n.c b/libguile/i18n.c index 47179d178..6c87fdaae 100644 --- a/libguile/i18n.c +++ b/libguile/i18n.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2014, 2017 Free Software Foundation, Inc. +/* Copyright (C) 2006-2014, 2017, 2019 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 @@ -71,6 +71,31 @@ setlocale (int category, const char *name) } #endif +/* The newlib C library has alternative names for locale constants. */ +#if HAVE_DECL__NL_NUMERIC_GROUPING +#define INT_CURR_SYMBOL _NL_MONETARY_INT_CURR_SYMBOL +#define MON_DECIMAL_POINT _NL_MONETARY_MON_DECIMAL_POINT +#define MON_THOUSANDS_SEP _NL_MONETARY_MON_THOUSANDS_SEP +#define MON_GROUPING _NL_MONETARY_MON_GROUPING +#define POSITIVE_SIGN _NL_MONETARY_POSITIVE_SIGN +#define NEGATIVE_SIGN _NL_MONETARY_NEGATIVE_SIGN +#define GROUPING _NL_NUMERIC_GROUPING +#define INT_FRAC_DIGITS _NL_MONETARY_INT_FRAC_DIGITS +#define FRAC_DIGITS _NL_MONETARY_FRAC_DIGITS +#define P_CS_PRECEDES _NL_MONETARY_P_CS_PRECEDES +#define P_SEP_BY_SPACE _NL_MONETARY_P_SEP_BY_SPACE +#define N_CS_PRECEDES _NL_MONETARY_N_CS_PRECEDES +#define N_SEP_BY_SPACE _NL_MONETARY_N_SEP_BY_SPACE +#define P_SIGN_POSN _NL_MONETARY_P_SIGN_POSN +#define N_SIGN_POSN _NL_MONETARY_N_SIGN_POSN +#define INT_P_CS_PRECEDES _NL_MONETARY_INT_P_CS_PRECEDES +#define INT_P_SEP_BY_SPACE _NL_MONETARY_INT_P_SEP_BY_SPACE +#define INT_N_CS_PRECEDES _NL_MONETARY_INT_N_CS_PRECEDES +#define INT_N_SEP_BY_SPACE _NL_MONETARY_INT_N_SEP_BY_SPACE +#define INT_P_SIGN_POSN _NL_MONETARY_INT_P_SIGN_POSN +#define INT_N_SIGN_POSN _NL_MONETARY_INT_N_SIGN_POSN +#endif + /* Helper stringification macro. */ #define SCM_I18N_STRINGIFY(_name) # _name |