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