1*820c1a8dSHiroo HAYASHI /* Substitute for and wrapper around <langinfo.h>. 2*820c1a8dSHiroo HAYASHI Copyright (C) 2009-2021 Free Software Foundation, Inc. 3*820c1a8dSHiroo HAYASHI 4*820c1a8dSHiroo HAYASHI This file is free software: you can redistribute it and/or modify 5*820c1a8dSHiroo HAYASHI it under the terms of the GNU Lesser General Public License as 6*820c1a8dSHiroo HAYASHI published by the Free Software Foundation; either version 2.1 of the 7*820c1a8dSHiroo HAYASHI License, or (at your option) any later version. 8*820c1a8dSHiroo HAYASHI 9*820c1a8dSHiroo HAYASHI This file is distributed in the hope that it will be useful, 10*820c1a8dSHiroo HAYASHI but WITHOUT ANY WARRANTY; without even the implied warranty of 11*820c1a8dSHiroo HAYASHI MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*820c1a8dSHiroo HAYASHI GNU Lesser General Public License for more details. 13*820c1a8dSHiroo HAYASHI 14*820c1a8dSHiroo HAYASHI You should have received a copy of the GNU Lesser General Public License 15*820c1a8dSHiroo HAYASHI along with this program. If not, see <https://www.gnu.org/licenses/>. */ 16*820c1a8dSHiroo HAYASHI 17*820c1a8dSHiroo HAYASHI /* 18*820c1a8dSHiroo HAYASHI * POSIX <langinfo.h> for platforms that lack it or have an incomplete one. 19*820c1a8dSHiroo HAYASHI * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html> 20*820c1a8dSHiroo HAYASHI */ 21*820c1a8dSHiroo HAYASHI 22*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_LANGINFO_H 23*820c1a8dSHiroo HAYASHI 24*820c1a8dSHiroo HAYASHI #if __GNUC__ >= 3 25*820c1a8dSHiroo HAYASHI @PRAGMA_SYSTEM_HEADER@ 26*820c1a8dSHiroo HAYASHI #endif 27*820c1a8dSHiroo HAYASHI @PRAGMA_COLUMNS@ 28*820c1a8dSHiroo HAYASHI 29*820c1a8dSHiroo HAYASHI /* The include_next requires a split double-inclusion guard. */ 30*820c1a8dSHiroo HAYASHI #if @HAVE_LANGINFO_H@ 31*820c1a8dSHiroo HAYASHI # @INCLUDE_NEXT@ @NEXT_LANGINFO_H@ 32*820c1a8dSHiroo HAYASHI #endif 33*820c1a8dSHiroo HAYASHI 34*820c1a8dSHiroo HAYASHI #ifndef _@GUARD_PREFIX@_LANGINFO_H 35*820c1a8dSHiroo HAYASHI #define _@GUARD_PREFIX@_LANGINFO_H 36*820c1a8dSHiroo HAYASHI 37*820c1a8dSHiroo HAYASHI 38*820c1a8dSHiroo HAYASHI #if !@HAVE_LANGINFO_H@ 39*820c1a8dSHiroo HAYASHI 40*820c1a8dSHiroo HAYASHI /* A platform that lacks <langinfo.h>. */ 41*820c1a8dSHiroo HAYASHI 42*820c1a8dSHiroo HAYASHI /* Assume that it also lacks <nl_types.h> and the nl_item type. */ 43*820c1a8dSHiroo HAYASHI # if !GNULIB_defined_nl_item 44*820c1a8dSHiroo HAYASHI typedef int nl_item; 45*820c1a8dSHiroo HAYASHI # define GNULIB_defined_nl_item 1 46*820c1a8dSHiroo HAYASHI # endif 47*820c1a8dSHiroo HAYASHI 48*820c1a8dSHiroo HAYASHI /* nl_langinfo items of the LC_CTYPE category */ 49*820c1a8dSHiroo HAYASHI # define CODESET 10000 50*820c1a8dSHiroo HAYASHI /* nl_langinfo items of the LC_NUMERIC category */ 51*820c1a8dSHiroo HAYASHI # define RADIXCHAR 10001 52*820c1a8dSHiroo HAYASHI # define DECIMAL_POINT RADIXCHAR 53*820c1a8dSHiroo HAYASHI # define THOUSEP 10002 54*820c1a8dSHiroo HAYASHI # define THOUSANDS_SEP THOUSEP 55*820c1a8dSHiroo HAYASHI # define GROUPING 10114 56*820c1a8dSHiroo HAYASHI /* nl_langinfo items of the LC_TIME category */ 57*820c1a8dSHiroo HAYASHI # define D_T_FMT 10003 58*820c1a8dSHiroo HAYASHI # define D_FMT 10004 59*820c1a8dSHiroo HAYASHI # define T_FMT 10005 60*820c1a8dSHiroo HAYASHI # define T_FMT_AMPM 10006 61*820c1a8dSHiroo HAYASHI # define AM_STR 10007 62*820c1a8dSHiroo HAYASHI # define PM_STR 10008 63*820c1a8dSHiroo HAYASHI # define DAY_1 10009 64*820c1a8dSHiroo HAYASHI # define DAY_2 (DAY_1 + 1) 65*820c1a8dSHiroo HAYASHI # define DAY_3 (DAY_1 + 2) 66*820c1a8dSHiroo HAYASHI # define DAY_4 (DAY_1 + 3) 67*820c1a8dSHiroo HAYASHI # define DAY_5 (DAY_1 + 4) 68*820c1a8dSHiroo HAYASHI # define DAY_6 (DAY_1 + 5) 69*820c1a8dSHiroo HAYASHI # define DAY_7 (DAY_1 + 6) 70*820c1a8dSHiroo HAYASHI # define ABDAY_1 10016 71*820c1a8dSHiroo HAYASHI # define ABDAY_2 (ABDAY_1 + 1) 72*820c1a8dSHiroo HAYASHI # define ABDAY_3 (ABDAY_1 + 2) 73*820c1a8dSHiroo HAYASHI # define ABDAY_4 (ABDAY_1 + 3) 74*820c1a8dSHiroo HAYASHI # define ABDAY_5 (ABDAY_1 + 4) 75*820c1a8dSHiroo HAYASHI # define ABDAY_6 (ABDAY_1 + 5) 76*820c1a8dSHiroo HAYASHI # define ABDAY_7 (ABDAY_1 + 6) 77*820c1a8dSHiroo HAYASHI # define MON_1 10023 78*820c1a8dSHiroo HAYASHI # define MON_2 (MON_1 + 1) 79*820c1a8dSHiroo HAYASHI # define MON_3 (MON_1 + 2) 80*820c1a8dSHiroo HAYASHI # define MON_4 (MON_1 + 3) 81*820c1a8dSHiroo HAYASHI # define MON_5 (MON_1 + 4) 82*820c1a8dSHiroo HAYASHI # define MON_6 (MON_1 + 5) 83*820c1a8dSHiroo HAYASHI # define MON_7 (MON_1 + 6) 84*820c1a8dSHiroo HAYASHI # define MON_8 (MON_1 + 7) 85*820c1a8dSHiroo HAYASHI # define MON_9 (MON_1 + 8) 86*820c1a8dSHiroo HAYASHI # define MON_10 (MON_1 + 9) 87*820c1a8dSHiroo HAYASHI # define MON_11 (MON_1 + 10) 88*820c1a8dSHiroo HAYASHI # define MON_12 (MON_1 + 11) 89*820c1a8dSHiroo HAYASHI # define ALTMON_1 10200 90*820c1a8dSHiroo HAYASHI # define ALTMON_2 (ALTMON_1 + 1) 91*820c1a8dSHiroo HAYASHI # define ALTMON_3 (ALTMON_1 + 2) 92*820c1a8dSHiroo HAYASHI # define ALTMON_4 (ALTMON_1 + 3) 93*820c1a8dSHiroo HAYASHI # define ALTMON_5 (ALTMON_1 + 4) 94*820c1a8dSHiroo HAYASHI # define ALTMON_6 (ALTMON_1 + 5) 95*820c1a8dSHiroo HAYASHI # define ALTMON_7 (ALTMON_1 + 6) 96*820c1a8dSHiroo HAYASHI # define ALTMON_8 (ALTMON_1 + 7) 97*820c1a8dSHiroo HAYASHI # define ALTMON_9 (ALTMON_1 + 8) 98*820c1a8dSHiroo HAYASHI # define ALTMON_10 (ALTMON_1 + 9) 99*820c1a8dSHiroo HAYASHI # define ALTMON_11 (ALTMON_1 + 10) 100*820c1a8dSHiroo HAYASHI # define ALTMON_12 (ALTMON_1 + 11) 101*820c1a8dSHiroo HAYASHI # define ABMON_1 10035 102*820c1a8dSHiroo HAYASHI # define ABMON_2 (ABMON_1 + 1) 103*820c1a8dSHiroo HAYASHI # define ABMON_3 (ABMON_1 + 2) 104*820c1a8dSHiroo HAYASHI # define ABMON_4 (ABMON_1 + 3) 105*820c1a8dSHiroo HAYASHI # define ABMON_5 (ABMON_1 + 4) 106*820c1a8dSHiroo HAYASHI # define ABMON_6 (ABMON_1 + 5) 107*820c1a8dSHiroo HAYASHI # define ABMON_7 (ABMON_1 + 6) 108*820c1a8dSHiroo HAYASHI # define ABMON_8 (ABMON_1 + 7) 109*820c1a8dSHiroo HAYASHI # define ABMON_9 (ABMON_1 + 8) 110*820c1a8dSHiroo HAYASHI # define ABMON_10 (ABMON_1 + 9) 111*820c1a8dSHiroo HAYASHI # define ABMON_11 (ABMON_1 + 10) 112*820c1a8dSHiroo HAYASHI # define ABMON_12 (ABMON_1 + 11) 113*820c1a8dSHiroo HAYASHI # define ERA 10047 114*820c1a8dSHiroo HAYASHI # define ERA_D_FMT 10048 115*820c1a8dSHiroo HAYASHI # define ERA_D_T_FMT 10049 116*820c1a8dSHiroo HAYASHI # define ERA_T_FMT 10050 117*820c1a8dSHiroo HAYASHI # define ALT_DIGITS 10051 118*820c1a8dSHiroo HAYASHI /* nl_langinfo items of the LC_MONETARY category */ 119*820c1a8dSHiroo HAYASHI # define CRNCYSTR 10052 120*820c1a8dSHiroo HAYASHI # define CURRENCY_SYMBOL CRNCYSTR 121*820c1a8dSHiroo HAYASHI # define INT_CURR_SYMBOL 10100 122*820c1a8dSHiroo HAYASHI # define MON_DECIMAL_POINT 10101 123*820c1a8dSHiroo HAYASHI # define MON_THOUSANDS_SEP 10102 124*820c1a8dSHiroo HAYASHI # define MON_GROUPING 10103 125*820c1a8dSHiroo HAYASHI # define POSITIVE_SIGN 10104 126*820c1a8dSHiroo HAYASHI # define NEGATIVE_SIGN 10105 127*820c1a8dSHiroo HAYASHI # define FRAC_DIGITS 10106 128*820c1a8dSHiroo HAYASHI # define INT_FRAC_DIGITS 10107 129*820c1a8dSHiroo HAYASHI # define P_CS_PRECEDES 10108 130*820c1a8dSHiroo HAYASHI # define N_CS_PRECEDES 10109 131*820c1a8dSHiroo HAYASHI # define P_SEP_BY_SPACE 10110 132*820c1a8dSHiroo HAYASHI # define N_SEP_BY_SPACE 10111 133*820c1a8dSHiroo HAYASHI # define P_SIGN_POSN 10112 134*820c1a8dSHiroo HAYASHI # define N_SIGN_POSN 10113 135*820c1a8dSHiroo HAYASHI /* nl_langinfo items of the LC_MESSAGES category */ 136*820c1a8dSHiroo HAYASHI # define YESEXPR 10053 137*820c1a8dSHiroo HAYASHI # define NOEXPR 10054 138*820c1a8dSHiroo HAYASHI 139*820c1a8dSHiroo HAYASHI #else 140*820c1a8dSHiroo HAYASHI 141*820c1a8dSHiroo HAYASHI /* A platform that has <langinfo.h>. */ 142*820c1a8dSHiroo HAYASHI 143*820c1a8dSHiroo HAYASHI # if !@HAVE_LANGINFO_CODESET@ 144*820c1a8dSHiroo HAYASHI # define CODESET 10000 145*820c1a8dSHiroo HAYASHI # define GNULIB_defined_CODESET 1 146*820c1a8dSHiroo HAYASHI # endif 147*820c1a8dSHiroo HAYASHI 148*820c1a8dSHiroo HAYASHI # if !@HAVE_LANGINFO_T_FMT_AMPM@ 149*820c1a8dSHiroo HAYASHI # define T_FMT_AMPM 10006 150*820c1a8dSHiroo HAYASHI # define GNULIB_defined_T_FMT_AMPM 1 151*820c1a8dSHiroo HAYASHI # endif 152*820c1a8dSHiroo HAYASHI 153*820c1a8dSHiroo HAYASHI # if !@HAVE_LANGINFO_ALTMON@ 154*820c1a8dSHiroo HAYASHI # define ALTMON_1 10200 155*820c1a8dSHiroo HAYASHI # define ALTMON_2 (ALTMON_1 + 1) 156*820c1a8dSHiroo HAYASHI # define ALTMON_3 (ALTMON_1 + 2) 157*820c1a8dSHiroo HAYASHI # define ALTMON_4 (ALTMON_1 + 3) 158*820c1a8dSHiroo HAYASHI # define ALTMON_5 (ALTMON_1 + 4) 159*820c1a8dSHiroo HAYASHI # define ALTMON_6 (ALTMON_1 + 5) 160*820c1a8dSHiroo HAYASHI # define ALTMON_7 (ALTMON_1 + 6) 161*820c1a8dSHiroo HAYASHI # define ALTMON_8 (ALTMON_1 + 7) 162*820c1a8dSHiroo HAYASHI # define ALTMON_9 (ALTMON_1 + 8) 163*820c1a8dSHiroo HAYASHI # define ALTMON_10 (ALTMON_1 + 9) 164*820c1a8dSHiroo HAYASHI # define ALTMON_11 (ALTMON_1 + 10) 165*820c1a8dSHiroo HAYASHI # define ALTMON_12 (ALTMON_1 + 11) 166*820c1a8dSHiroo HAYASHI # define GNULIB_defined_ALTMON 1 167*820c1a8dSHiroo HAYASHI # endif 168*820c1a8dSHiroo HAYASHI 169*820c1a8dSHiroo HAYASHI # if !@HAVE_LANGINFO_ERA@ 170*820c1a8dSHiroo HAYASHI # define ERA 10047 171*820c1a8dSHiroo HAYASHI # define ERA_D_FMT 10048 172*820c1a8dSHiroo HAYASHI # define ERA_D_T_FMT 10049 173*820c1a8dSHiroo HAYASHI # define ERA_T_FMT 10050 174*820c1a8dSHiroo HAYASHI # define ALT_DIGITS 10051 175*820c1a8dSHiroo HAYASHI # define GNULIB_defined_ERA 1 176*820c1a8dSHiroo HAYASHI # endif 177*820c1a8dSHiroo HAYASHI 178*820c1a8dSHiroo HAYASHI # if !@HAVE_LANGINFO_YESEXPR@ 179*820c1a8dSHiroo HAYASHI # define YESEXPR 10053 180*820c1a8dSHiroo HAYASHI # define NOEXPR 10054 181*820c1a8dSHiroo HAYASHI # define GNULIB_defined_YESEXPR 1 182*820c1a8dSHiroo HAYASHI # endif 183*820c1a8dSHiroo HAYASHI 184*820c1a8dSHiroo HAYASHI #endif 185*820c1a8dSHiroo HAYASHI 186*820c1a8dSHiroo HAYASHI /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 187*820c1a8dSHiroo HAYASHI 188*820c1a8dSHiroo HAYASHI /* The definition of _GL_WARN_ON_USE is copied here. */ 189*820c1a8dSHiroo HAYASHI 190*820c1a8dSHiroo HAYASHI /* Declare overridden functions. */ 191*820c1a8dSHiroo HAYASHI 192*820c1a8dSHiroo HAYASHI 193*820c1a8dSHiroo HAYASHI /* Return a piece of locale dependent information. 194*820c1a8dSHiroo HAYASHI Note: The difference between nl_langinfo (CODESET) and locale_charset () 195*820c1a8dSHiroo HAYASHI is that the latter normalizes the encoding names to GNU conventions. */ 196*820c1a8dSHiroo HAYASHI 197*820c1a8dSHiroo HAYASHI #if @GNULIB_NL_LANGINFO@ 198*820c1a8dSHiroo HAYASHI # if @REPLACE_NL_LANGINFO@ 199*820c1a8dSHiroo HAYASHI # if !(defined __cplusplus && defined GNULIB_NAMESPACE) 200*820c1a8dSHiroo HAYASHI # undef nl_langinfo 201*820c1a8dSHiroo HAYASHI # define nl_langinfo rpl_nl_langinfo 202*820c1a8dSHiroo HAYASHI # endif 203*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item)); 204*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_RPL (nl_langinfo, char *, (nl_item item)); 205*820c1a8dSHiroo HAYASHI # else 206*820c1a8dSHiroo HAYASHI # if !@HAVE_NL_LANGINFO@ 207*820c1a8dSHiroo HAYASHI _GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item)); 208*820c1a8dSHiroo HAYASHI # endif 209*820c1a8dSHiroo HAYASHI _GL_CXXALIAS_SYS (nl_langinfo, char *, (nl_item item)); 210*820c1a8dSHiroo HAYASHI # endif 211*820c1a8dSHiroo HAYASHI _GL_CXXALIASWARN (nl_langinfo); 212*820c1a8dSHiroo HAYASHI #elif defined GNULIB_POSIXCHECK 213*820c1a8dSHiroo HAYASHI # undef nl_langinfo 214*820c1a8dSHiroo HAYASHI # if HAVE_RAW_DECL_NL_LANGINFO 215*820c1a8dSHiroo HAYASHI _GL_WARN_ON_USE (nl_langinfo, "nl_langinfo is not portable - " 216*820c1a8dSHiroo HAYASHI "use gnulib module nl_langinfo for portability"); 217*820c1a8dSHiroo HAYASHI # endif 218*820c1a8dSHiroo HAYASHI #endif 219*820c1a8dSHiroo HAYASHI 220*820c1a8dSHiroo HAYASHI 221*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_LANGINFO_H */ 222*820c1a8dSHiroo HAYASHI #endif /* _@GUARD_PREFIX@_LANGINFO_H */ 223