Handle newlib C library's langinfo constant names
authorMichael Gran <spk121@yahoo.com>
Sun, 24 Feb 2019 00:33:50 +0000 (16:33 -0800)
committerMichael Gran <spk121@yahoo.com>
Sun, 24 Feb 2019 00:33:50 +0000 (16:33 -0800)
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

configure.ac
libguile/i18n.c

index b435229db69bb01ee485c4624d04cc4e578ba84c..9073deba040fd6dbc299d708c668e382d8b58d87 100644 (file)
@@ -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
index 47179d17863e18c637df3f9c00e7c557c1ec211a..6c87fdaaeda32679c12287c89184011bf946e0b8 100644 (file)
@@ -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