"Fossies" - the Fresh Open Source Software Archive

Member "le-1.16.6/lib/wchar.in.h" (8 Feb 2019, 35606 Bytes) of package /linux/misc/le-1.16.6.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "wchar.in.h": 1.16.5_vs_1.16.6.

    1 /* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
    2 
    3    Copyright (C) 2007-2019 Free Software Foundation, Inc.
    4 
    5    This program is free software; you can redistribute it and/or modify
    6    it under the terms of the GNU General Public License as published by
    7    the Free Software Foundation; either version 3, or (at your option)
    8    any later version.
    9 
   10    This program is distributed in the hope that it will be useful,
   11    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   13    GNU General Public License for more details.
   14 
   15    You should have received a copy of the GNU General Public License
   16    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
   17 
   18 /* Written by Eric Blake.  */
   19 
   20 /*
   21  * ISO C 99 <wchar.h> for platforms that have issues.
   22  * <http://www.opengroup.org/susv3xbd/wchar.h.html>
   23  *
   24  * For now, this just ensures proper prerequisite inclusion order and
   25  * the declaration of wcwidth().
   26  */
   27 
   28 #if __GNUC__ >= 3
   29 @PRAGMA_SYSTEM_HEADER@
   30 #endif
   31 @PRAGMA_COLUMNS@
   32 
   33 #if (((defined __need_mbstate_t || defined __need_wint_t)               \
   34       && !defined __MINGW32__)                                          \
   35      || (defined __hpux                                                 \
   36          && ((defined _INTTYPES_INCLUDED && !defined strtoimax)         \
   37              || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H))               \
   38      || (defined __MINGW32__ && defined __STRING_H_SOURCED__)           \
   39      || defined _GL_ALREADY_INCLUDING_WCHAR_H)
   40 /* Special invocation convention:
   41    - Inside glibc and uClibc header files, but not MinGW.
   42    - On HP-UX 11.00 we have a sequence of nested includes
   43      <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
   44      once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
   45      and once directly.  In both situations 'wint_t' is not yet defined,
   46      therefore we cannot provide the function overrides; instead include only
   47      the system's <wchar.h>.
   48    - With MinGW 3.22, when <string.h> includes <wchar.h>, only some part of
   49      <wchar.h> is actually processed, and that doesn't include 'mbstate_t'.
   50    - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
   51      the latter includes <wchar.h>.  But here, we have no way to detect whether
   52      <wctype.h> is completely included or is still being included.  */
   53 
   54 #@INCLUDE_NEXT@ @NEXT_WCHAR_H@
   55 
   56 #else
   57 /* Normal invocation convention.  */
   58 
   59 #ifndef _@GUARD_PREFIX@_WCHAR_H
   60 
   61 #define _GL_ALREADY_INCLUDING_WCHAR_H
   62 
   63 #if @HAVE_FEATURES_H@
   64 # include <features.h> /* for __GLIBC__ */
   65 #endif
   66 
   67 /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
   68    <wchar.h>.
   69    BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
   70    included before <wchar.h>.
   71    In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
   72    by <stddef.h>.
   73    But avoid namespace pollution on glibc systems.  */
   74 #if !(defined __GLIBC__ && !defined __UCLIBC__)
   75 # include <stddef.h>
   76 #endif
   77 #ifndef __GLIBC__
   78 # include <stdio.h>
   79 # include <time.h>
   80 #endif
   81 
   82 /* Include the original <wchar.h> if it exists.
   83    Some builds of uClibc lack it.  */
   84 /* The include_next requires a split double-inclusion guard.  */
   85 #if @HAVE_WCHAR_H@
   86 # @INCLUDE_NEXT@ @NEXT_WCHAR_H@
   87 #endif
   88 
   89 #undef _GL_ALREADY_INCLUDING_WCHAR_H
   90 
   91 #ifndef _@GUARD_PREFIX@_WCHAR_H
   92 #define _@GUARD_PREFIX@_WCHAR_H
   93 
   94 /* The __attribute__ feature is available in gcc versions 2.5 and later.
   95    The attribute __pure__ was added in gcc 2.96.  */
   96 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
   97 # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
   98 #else
   99 # define _GL_ATTRIBUTE_PURE /* empty */
  100 #endif
  101 
  102 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
  103 
  104 /* The definition of _GL_ARG_NONNULL is copied here.  */
  105 
  106 /* The definition of _GL_WARN_ON_USE is copied here.  */
  107 
  108 
  109 /* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
  110 #if !@HAVE_WINT_T@ && !defined wint_t
  111 # define wint_t int
  112 # ifndef WEOF
  113 #  define WEOF -1
  114 # endif
  115 #else
  116 /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
  117    <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
  118    wint_t must be "unchanged by default argument promotions".  Override it.  */
  119 # if @GNULIB_OVERRIDES_WINT_T@
  120 #  if !GNULIB_defined_wint_t
  121 #   if @HAVE_CRTDEFS_H@
  122 #    include <crtdefs.h>
  123 #   else
  124 #    include <stddef.h>
  125 #   endif
  126 typedef unsigned int rpl_wint_t;
  127 #   undef wint_t
  128 #   define wint_t rpl_wint_t
  129 #   define GNULIB_defined_wint_t 1
  130 #  endif
  131 # endif
  132 # ifndef WEOF
  133 #  define WEOF ((wint_t) -1)
  134 # endif
  135 #endif
  136 
  137 
  138 /* Override mbstate_t if it is too small.
  139    On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
  140    implementing mbrtowc for encodings like UTF-8.  */
  141 #if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
  142 # if !GNULIB_defined_mbstate_t
  143 typedef int rpl_mbstate_t;
  144 #  undef mbstate_t
  145 #  define mbstate_t rpl_mbstate_t
  146 #  define GNULIB_defined_mbstate_t 1
  147 # endif
  148 #endif
  149 
  150 
  151 /* Convert a single-byte character to a wide character.  */
  152 #if @GNULIB_BTOWC@
  153 # if @REPLACE_BTOWC@
  154 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  155 #   undef btowc
  156 #   define btowc rpl_btowc
  157 #  endif
  158 _GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
  159 _GL_CXXALIAS_RPL (btowc, wint_t, (int c));
  160 # else
  161 #  if !@HAVE_BTOWC@
  162 _GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
  163 #  endif
  164 _GL_CXXALIAS_SYS (btowc, wint_t, (int c));
  165 # endif
  166 _GL_CXXALIASWARN (btowc);
  167 #elif defined GNULIB_POSIXCHECK
  168 # undef btowc
  169 # if HAVE_RAW_DECL_BTOWC
  170 _GL_WARN_ON_USE (btowc, "btowc is unportable - "
  171                  "use gnulib module btowc for portability");
  172 # endif
  173 #endif
  174 
  175 
  176 /* Convert a wide character to a single-byte character.  */
  177 #if @GNULIB_WCTOB@
  178 # if @REPLACE_WCTOB@
  179 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  180 #   undef wctob
  181 #   define wctob rpl_wctob
  182 #  endif
  183 _GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
  184 _GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
  185 # else
  186 #  if !defined wctob && !@HAVE_DECL_WCTOB@
  187 /* wctob is provided by gnulib, or wctob exists but is not declared.  */
  188 _GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
  189 #  endif
  190 _GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
  191 # endif
  192 _GL_CXXALIASWARN (wctob);
  193 #elif defined GNULIB_POSIXCHECK
  194 # undef wctob
  195 # if HAVE_RAW_DECL_WCTOB
  196 _GL_WARN_ON_USE (wctob, "wctob is unportable - "
  197                  "use gnulib module wctob for portability");
  198 # endif
  199 #endif
  200 
  201 
  202 /* Test whether *PS is in the initial state.  */
  203 #if @GNULIB_MBSINIT@
  204 # if @REPLACE_MBSINIT@
  205 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  206 #   undef mbsinit
  207 #   define mbsinit rpl_mbsinit
  208 #  endif
  209 _GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
  210 _GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
  211 # else
  212 #  if !@HAVE_MBSINIT@
  213 _GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
  214 #  endif
  215 _GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
  216 # endif
  217 _GL_CXXALIASWARN (mbsinit);
  218 #elif defined GNULIB_POSIXCHECK
  219 # undef mbsinit
  220 # if HAVE_RAW_DECL_MBSINIT
  221 _GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
  222                  "use gnulib module mbsinit for portability");
  223 # endif
  224 #endif
  225 
  226 
  227 /* Convert a multibyte character to a wide character.  */
  228 #if @GNULIB_MBRTOWC@
  229 # if @REPLACE_MBRTOWC@
  230 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  231 #   undef mbrtowc
  232 #   define mbrtowc rpl_mbrtowc
  233 #  endif
  234 _GL_FUNCDECL_RPL (mbrtowc, size_t,
  235                   (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
  236 _GL_CXXALIAS_RPL (mbrtowc, size_t,
  237                   (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
  238 # else
  239 #  if !@HAVE_MBRTOWC@
  240 _GL_FUNCDECL_SYS (mbrtowc, size_t,
  241                   (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
  242 #  endif
  243 _GL_CXXALIAS_SYS (mbrtowc, size_t,
  244                   (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
  245 # endif
  246 _GL_CXXALIASWARN (mbrtowc);
  247 #elif defined GNULIB_POSIXCHECK
  248 # undef mbrtowc
  249 # if HAVE_RAW_DECL_MBRTOWC
  250 _GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
  251                  "use gnulib module mbrtowc for portability");
  252 # endif
  253 #endif
  254 
  255 
  256 /* Recognize a multibyte character.  */
  257 #if @GNULIB_MBRLEN@
  258 # if @REPLACE_MBRLEN@
  259 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  260 #   undef mbrlen
  261 #   define mbrlen rpl_mbrlen
  262 #  endif
  263 _GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
  264 _GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
  265 # else
  266 #  if !@HAVE_MBRLEN@
  267 _GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
  268 #  endif
  269 _GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
  270 # endif
  271 _GL_CXXALIASWARN (mbrlen);
  272 #elif defined GNULIB_POSIXCHECK
  273 # undef mbrlen
  274 # if HAVE_RAW_DECL_MBRLEN
  275 _GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
  276                  "use gnulib module mbrlen for portability");
  277 # endif
  278 #endif
  279 
  280 
  281 /* Convert a string to a wide string.  */
  282 #if @GNULIB_MBSRTOWCS@
  283 # if @REPLACE_MBSRTOWCS@
  284 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  285 #   undef mbsrtowcs
  286 #   define mbsrtowcs rpl_mbsrtowcs
  287 #  endif
  288 _GL_FUNCDECL_RPL (mbsrtowcs, size_t,
  289                   (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
  290                   _GL_ARG_NONNULL ((2)));
  291 _GL_CXXALIAS_RPL (mbsrtowcs, size_t,
  292                   (wchar_t *dest, const char **srcp, size_t len,
  293                    mbstate_t *ps));
  294 # else
  295 #  if !@HAVE_MBSRTOWCS@
  296 _GL_FUNCDECL_SYS (mbsrtowcs, size_t,
  297                   (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
  298                   _GL_ARG_NONNULL ((2)));
  299 #  endif
  300 _GL_CXXALIAS_SYS (mbsrtowcs, size_t,
  301                   (wchar_t *dest, const char **srcp, size_t len,
  302                    mbstate_t *ps));
  303 # endif
  304 _GL_CXXALIASWARN (mbsrtowcs);
  305 #elif defined GNULIB_POSIXCHECK
  306 # undef mbsrtowcs
  307 # if HAVE_RAW_DECL_MBSRTOWCS
  308 _GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
  309                  "use gnulib module mbsrtowcs for portability");
  310 # endif
  311 #endif
  312 
  313 
  314 /* Convert a string to a wide string.  */
  315 #if @GNULIB_MBSNRTOWCS@
  316 # if @REPLACE_MBSNRTOWCS@
  317 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  318 #   undef mbsnrtowcs
  319 #   define mbsnrtowcs rpl_mbsnrtowcs
  320 #  endif
  321 _GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
  322                   (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
  323                    mbstate_t *ps)
  324                   _GL_ARG_NONNULL ((2)));
  325 _GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
  326                   (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
  327                    mbstate_t *ps));
  328 # else
  329 #  if !@HAVE_MBSNRTOWCS@
  330 _GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
  331                   (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
  332                    mbstate_t *ps)
  333                   _GL_ARG_NONNULL ((2)));
  334 #  endif
  335 _GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
  336                   (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
  337                    mbstate_t *ps));
  338 # endif
  339 _GL_CXXALIASWARN (mbsnrtowcs);
  340 #elif defined GNULIB_POSIXCHECK
  341 # undef mbsnrtowcs
  342 # if HAVE_RAW_DECL_MBSNRTOWCS
  343 _GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
  344                  "use gnulib module mbsnrtowcs for portability");
  345 # endif
  346 #endif
  347 
  348 
  349 /* Convert a wide character to a multibyte character.  */
  350 #if @GNULIB_WCRTOMB@
  351 # if @REPLACE_WCRTOMB@
  352 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  353 #   undef wcrtomb
  354 #   define wcrtomb rpl_wcrtomb
  355 #  endif
  356 _GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
  357 _GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
  358 # else
  359 #  if !@HAVE_WCRTOMB@
  360 _GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
  361 #  endif
  362 _GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
  363 # endif
  364 _GL_CXXALIASWARN (wcrtomb);
  365 #elif defined GNULIB_POSIXCHECK
  366 # undef wcrtomb
  367 # if HAVE_RAW_DECL_WCRTOMB
  368 _GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
  369                  "use gnulib module wcrtomb for portability");
  370 # endif
  371 #endif
  372 
  373 
  374 /* Convert a wide string to a string.  */
  375 #if @GNULIB_WCSRTOMBS@
  376 # if @REPLACE_WCSRTOMBS@
  377 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  378 #   undef wcsrtombs
  379 #   define wcsrtombs rpl_wcsrtombs
  380 #  endif
  381 _GL_FUNCDECL_RPL (wcsrtombs, size_t,
  382                   (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
  383                   _GL_ARG_NONNULL ((2)));
  384 _GL_CXXALIAS_RPL (wcsrtombs, size_t,
  385                   (char *dest, const wchar_t **srcp, size_t len,
  386                    mbstate_t *ps));
  387 # else
  388 #  if !@HAVE_WCSRTOMBS@
  389 _GL_FUNCDECL_SYS (wcsrtombs, size_t,
  390                   (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
  391                   _GL_ARG_NONNULL ((2)));
  392 #  endif
  393 _GL_CXXALIAS_SYS (wcsrtombs, size_t,
  394                   (char *dest, const wchar_t **srcp, size_t len,
  395                    mbstate_t *ps));
  396 # endif
  397 _GL_CXXALIASWARN (wcsrtombs);
  398 #elif defined GNULIB_POSIXCHECK
  399 # undef wcsrtombs
  400 # if HAVE_RAW_DECL_WCSRTOMBS
  401 _GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
  402                  "use gnulib module wcsrtombs for portability");
  403 # endif
  404 #endif
  405 
  406 
  407 /* Convert a wide string to a string.  */
  408 #if @GNULIB_WCSNRTOMBS@
  409 # if @REPLACE_WCSNRTOMBS@
  410 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  411 #   undef wcsnrtombs
  412 #   define wcsnrtombs rpl_wcsnrtombs
  413 #  endif
  414 _GL_FUNCDECL_RPL (wcsnrtombs, size_t,
  415                   (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
  416                    mbstate_t *ps)
  417                   _GL_ARG_NONNULL ((2)));
  418 _GL_CXXALIAS_RPL (wcsnrtombs, size_t,
  419                   (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
  420                    mbstate_t *ps));
  421 # else
  422 #  if !@HAVE_WCSNRTOMBS@
  423 _GL_FUNCDECL_SYS (wcsnrtombs, size_t,
  424                   (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
  425                    mbstate_t *ps)
  426                   _GL_ARG_NONNULL ((2)));
  427 #  endif
  428 _GL_CXXALIAS_SYS (wcsnrtombs, size_t,
  429                   (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
  430                    mbstate_t *ps));
  431 # endif
  432 _GL_CXXALIASWARN (wcsnrtombs);
  433 #elif defined GNULIB_POSIXCHECK
  434 # undef wcsnrtombs
  435 # if HAVE_RAW_DECL_WCSNRTOMBS
  436 _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
  437                  "use gnulib module wcsnrtombs for portability");
  438 # endif
  439 #endif
  440 
  441 
  442 /* Return the number of screen columns needed for WC.  */
  443 #if @GNULIB_WCWIDTH@
  444 # if @REPLACE_WCWIDTH@
  445 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
  446 #   undef wcwidth
  447 #   define wcwidth rpl_wcwidth
  448 #  endif
  449 _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
  450 _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
  451 # else
  452 #  if !@HAVE_DECL_WCWIDTH@
  453 /* wcwidth exists but is not declared.  */
  454 _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
  455 #  endif
  456 _GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
  457 # endif
  458 _GL_CXXALIASWARN (wcwidth);
  459 #elif defined GNULIB_POSIXCHECK
  460 # undef wcwidth
  461 # if HAVE_RAW_DECL_WCWIDTH
  462 _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
  463                  "use gnulib module wcwidth for portability");
  464 # endif
  465 #endif
  466 
  467 
  468 /* Search N wide characters of S for C.  */
  469 #if @GNULIB_WMEMCHR@
  470 # if !@HAVE_WMEMCHR@
  471 _GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
  472                                       _GL_ATTRIBUTE_PURE);
  473 # endif
  474   /* On some systems, this function is defined as an overloaded function:
  475        extern "C++" {
  476          const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
  477          wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
  478        }  */
  479 _GL_CXXALIAS_SYS_CAST2 (wmemchr,
  480                         wchar_t *, (const wchar_t *, wchar_t, size_t),
  481                         const wchar_t *, (const wchar_t *, wchar_t, size_t));
  482 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
  483      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
  484 _GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
  485 _GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
  486                    (const wchar_t *s, wchar_t c, size_t n));
  487 # else
  488 _GL_CXXALIASWARN (wmemchr);
  489 # endif
  490 #elif defined GNULIB_POSIXCHECK
  491 # undef wmemchr
  492 # if HAVE_RAW_DECL_WMEMCHR
  493 _GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
  494                  "use gnulib module wmemchr for portability");
  495 # endif
  496 #endif
  497 
  498 
  499 /* Compare N wide characters of S1 and S2.  */
  500 #if @GNULIB_WMEMCMP@
  501 # if !@HAVE_WMEMCMP@
  502 _GL_FUNCDECL_SYS (wmemcmp, int,
  503                   (const wchar_t *s1, const wchar_t *s2, size_t n)
  504                   _GL_ATTRIBUTE_PURE);
  505 # endif
  506 _GL_CXXALIAS_SYS (wmemcmp, int,
  507                   (const wchar_t *s1, const wchar_t *s2, size_t n));
  508 _GL_CXXALIASWARN (wmemcmp);
  509 #elif defined GNULIB_POSIXCHECK
  510 # undef wmemcmp
  511 # if HAVE_RAW_DECL_WMEMCMP
  512 _GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
  513                  "use gnulib module wmemcmp for portability");
  514 # endif
  515 #endif
  516 
  517 
  518 /* Copy N wide characters of SRC to DEST.  */
  519 #if @GNULIB_WMEMCPY@
  520 # if !@HAVE_WMEMCPY@
  521 _GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
  522                   (wchar_t *dest, const wchar_t *src, size_t n));
  523 # endif
  524 _GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
  525                   (wchar_t *dest, const wchar_t *src, size_t n));
  526 _GL_CXXALIASWARN (wmemcpy);
  527 #elif defined GNULIB_POSIXCHECK
  528 # undef wmemcpy
  529 # if HAVE_RAW_DECL_WMEMCPY
  530 _GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
  531                  "use gnulib module wmemcpy for portability");
  532 # endif
  533 #endif
  534 
  535 
  536 /* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
  537    overlapping memory areas.  */
  538 #if @GNULIB_WMEMMOVE@
  539 # if !@HAVE_WMEMMOVE@
  540 _GL_FUNCDECL_SYS (wmemmove, wchar_t *,
  541                   (wchar_t *dest, const wchar_t *src, size_t n));
  542 # endif
  543 _GL_CXXALIAS_SYS (wmemmove, wchar_t *,
  544                   (wchar_t *dest, const wchar_t *src, size_t n));
  545 _GL_CXXALIASWARN (wmemmove);
  546 #elif defined GNULIB_POSIXCHECK
  547 # undef wmemmove
  548 # if HAVE_RAW_DECL_WMEMMOVE
  549 _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
  550                  "use gnulib module wmemmove for portability");
  551 # endif
  552 #endif
  553 
  554 
  555 /* Set N wide characters of S to C.  */
  556 #if @GNULIB_WMEMSET@
  557 # if !@HAVE_WMEMSET@
  558 _GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
  559 # endif
  560 _GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
  561 _GL_CXXALIASWARN (wmemset);
  562 #elif defined GNULIB_POSIXCHECK
  563 # undef wmemset
  564 # if HAVE_RAW_DECL_WMEMSET
  565 _GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
  566                  "use gnulib module wmemset for portability");
  567 # endif
  568 #endif
  569 
  570 
  571 /* Return the number of wide characters in S.  */
  572 #if @GNULIB_WCSLEN@
  573 # if !@HAVE_WCSLEN@
  574 _GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
  575 # endif
  576 _GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
  577 _GL_CXXALIASWARN (wcslen);
  578 #elif defined GNULIB_POSIXCHECK
  579 # undef wcslen
  580 # if HAVE_RAW_DECL_WCSLEN
  581 _GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
  582                  "use gnulib module wcslen for portability");
  583 # endif
  584 #endif
  585 
  586 
  587 /* Return the number of wide characters in S, but at most MAXLEN.  */
  588 #if @GNULIB_WCSNLEN@
  589 # if !@HAVE_WCSNLEN@
  590 _GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
  591                                    _GL_ATTRIBUTE_PURE);
  592 # endif
  593 _GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
  594 _GL_CXXALIASWARN (wcsnlen);
  595 #elif defined GNULIB_POSIXCHECK
  596 # undef wcsnlen
  597 # if HAVE_RAW_DECL_WCSNLEN
  598 _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
  599                  "use gnulib module wcsnlen for portability");
  600 # endif
  601 #endif
  602 
  603 
  604 /* Copy SRC to DEST.  */
  605 #if @GNULIB_WCSCPY@
  606 # if !@HAVE_WCSCPY@
  607 _GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
  608 # endif
  609 _GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
  610 _GL_CXXALIASWARN (wcscpy);
  611 #elif defined GNULIB_POSIXCHECK
  612 # undef wcscpy
  613 # if HAVE_RAW_DECL_WCSCPY
  614 _GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
  615                  "use gnulib module wcscpy for portability");
  616 # endif
  617 #endif
  618 
  619 
  620 /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST.  */
  621 #if @GNULIB_WCPCPY@
  622 # if !@HAVE_WCPCPY@
  623 _GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
  624 # endif
  625 _GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
  626 _GL_CXXALIASWARN (wcpcpy);
  627 #elif defined GNULIB_POSIXCHECK
  628 # undef wcpcpy
  629 # if HAVE_RAW_DECL_WCPCPY
  630 _GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
  631                  "use gnulib module wcpcpy for portability");
  632 # endif
  633 #endif
  634 
  635 
  636 /* Copy no more than N wide characters of SRC to DEST.  */
  637 #if @GNULIB_WCSNCPY@
  638 # if !@HAVE_WCSNCPY@
  639 _GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
  640                   (wchar_t *dest, const wchar_t *src, size_t n));
  641 # endif
  642 _GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
  643                   (wchar_t *dest, const wchar_t *src, size_t n));
  644 _GL_CXXALIASWARN (wcsncpy);
  645 #elif defined GNULIB_POSIXCHECK
  646 # undef wcsncpy
  647 # if HAVE_RAW_DECL_WCSNCPY
  648 _GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
  649                  "use gnulib module wcsncpy for portability");
  650 # endif
  651 #endif
  652 
  653 
  654 /* Copy no more than N characters of SRC to DEST, returning the address of
  655    the last character written into DEST.  */
  656 #if @GNULIB_WCPNCPY@
  657 # if !@HAVE_WCPNCPY@
  658 _GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
  659                   (wchar_t *dest, const wchar_t *src, size_t n));
  660 # endif
  661 _GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
  662                   (wchar_t *dest, const wchar_t *src, size_t n));
  663 _GL_CXXALIASWARN (wcpncpy);
  664 #elif defined GNULIB_POSIXCHECK
  665 # undef wcpncpy
  666 # if HAVE_RAW_DECL_WCPNCPY
  667 _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
  668                  "use gnulib module wcpncpy for portability");
  669 # endif
  670 #endif
  671 
  672 
  673 /* Append SRC onto DEST.  */
  674 #if @GNULIB_WCSCAT@
  675 # if !@HAVE_WCSCAT@
  676 _GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
  677 # endif
  678 _GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
  679 _GL_CXXALIASWARN (wcscat);
  680 #elif defined GNULIB_POSIXCHECK
  681 # undef wcscat
  682 # if HAVE_RAW_DECL_WCSCAT
  683 _GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
  684                  "use gnulib module wcscat for portability");
  685 # endif
  686 #endif
  687 
  688 
  689 /* Append no more than N wide characters of SRC onto DEST.  */
  690 #if @GNULIB_WCSNCAT@
  691 # if !@HAVE_WCSNCAT@
  692 _GL_FUNCDECL_SYS (wcsncat, wchar_t *,
  693                   (wchar_t *dest, const wchar_t *src, size_t n));
  694 # endif
  695 _GL_CXXALIAS_SYS (wcsncat, wchar_t *,
  696                   (wchar_t *dest, const wchar_t *src, size_t n));
  697 _GL_CXXALIASWARN (wcsncat);
  698 #elif defined GNULIB_POSIXCHECK
  699 # undef wcsncat
  700 # if HAVE_RAW_DECL_WCSNCAT
  701 _GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
  702                  "use gnulib module wcsncat for portability");
  703 # endif
  704 #endif
  705 
  706 
  707 /* Compare S1 and S2.  */
  708 #if @GNULIB_WCSCMP@
  709 # if !@HAVE_WCSCMP@
  710 _GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
  711                                _GL_ATTRIBUTE_PURE);
  712 # endif
  713 _GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
  714 _GL_CXXALIASWARN (wcscmp);
  715 #elif defined GNULIB_POSIXCHECK
  716 # undef wcscmp
  717 # if HAVE_RAW_DECL_WCSCMP
  718 _GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
  719                  "use gnulib module wcscmp for portability");
  720 # endif
  721 #endif
  722 
  723 
  724 /* Compare no more than N wide characters of S1 and S2.  */
  725 #if @GNULIB_WCSNCMP@
  726 # if !@HAVE_WCSNCMP@
  727 _GL_FUNCDECL_SYS (wcsncmp, int,
  728                   (const wchar_t *s1, const wchar_t *s2, size_t n)
  729                   _GL_ATTRIBUTE_PURE);
  730 # endif
  731 _GL_CXXALIAS_SYS (wcsncmp, int,
  732                   (const wchar_t *s1, const wchar_t *s2, size_t n));
  733 _GL_CXXALIASWARN (wcsncmp);
  734 #elif defined GNULIB_POSIXCHECK
  735 # undef wcsncmp
  736 # if HAVE_RAW_DECL_WCSNCMP
  737 _GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
  738                  "use gnulib module wcsncmp for portability");
  739 # endif
  740 #endif
  741 
  742 
  743 /* Compare S1 and S2, ignoring case.  */
  744 #if @GNULIB_WCSCASECMP@
  745 # if !@HAVE_WCSCASECMP@
  746 _GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
  747                                    _GL_ATTRIBUTE_PURE);
  748 # endif
  749 _GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
  750 _GL_CXXALIASWARN (wcscasecmp);
  751 #elif defined GNULIB_POSIXCHECK
  752 # undef wcscasecmp
  753 # if HAVE_RAW_DECL_WCSCASECMP
  754 _GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
  755                  "use gnulib module wcscasecmp for portability");
  756 # endif
  757 #endif
  758 
  759 
  760 /* Compare no more than N chars of S1 and S2, ignoring case.  */
  761 #if @GNULIB_WCSNCASECMP@
  762 # if !@HAVE_WCSNCASECMP@
  763 _GL_FUNCDECL_SYS (wcsncasecmp, int,
  764                   (const wchar_t *s1, const wchar_t *s2, size_t n)
  765                   _GL_ATTRIBUTE_PURE);
  766 # endif
  767 _GL_CXXALIAS_SYS (wcsncasecmp, int,
  768                   (const wchar_t *s1, const wchar_t *s2, size_t n));
  769 _GL_CXXALIASWARN (wcsncasecmp);
  770 #elif defined GNULIB_POSIXCHECK
  771 # undef wcsncasecmp
  772 # if HAVE_RAW_DECL_WCSNCASECMP
  773 _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
  774                  "use gnulib module wcsncasecmp for portability");
  775 # endif
  776 #endif
  777 
  778 
  779 /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
  780    category of the current locale.  */
  781 #if @GNULIB_WCSCOLL@
  782 # if !@HAVE_WCSCOLL@
  783 _GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
  784 # endif
  785 _GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
  786 _GL_CXXALIASWARN (wcscoll);
  787 #elif defined GNULIB_POSIXCHECK
  788 # undef wcscoll
  789 # if HAVE_RAW_DECL_WCSCOLL
  790 _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
  791                  "use gnulib module wcscoll for portability");
  792 # endif
  793 #endif
  794 
  795 
  796 /* Transform S2 into array pointed to by S1 such that if wcscmp is applied
  797    to two transformed strings the result is the as applying 'wcscoll' to the
  798    original strings.  */
  799 #if @GNULIB_WCSXFRM@
  800 # if !@HAVE_WCSXFRM@
  801 _GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
  802 # endif
  803 _GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
  804 _GL_CXXALIASWARN (wcsxfrm);
  805 #elif defined GNULIB_POSIXCHECK
  806 # undef wcsxfrm
  807 # if HAVE_RAW_DECL_WCSXFRM
  808 _GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
  809                  "use gnulib module wcsxfrm for portability");
  810 # endif
  811 #endif
  812 
  813 
  814 /* Duplicate S, returning an identical malloc'd string.  */
  815 #if @GNULIB_WCSDUP@
  816 # if !@HAVE_WCSDUP@
  817 _GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
  818 # endif
  819 _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
  820 _GL_CXXALIASWARN (wcsdup);
  821 #elif defined GNULIB_POSIXCHECK
  822 # undef wcsdup
  823 # if HAVE_RAW_DECL_WCSDUP
  824 _GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
  825                  "use gnulib module wcsdup for portability");
  826 # endif
  827 #endif
  828 
  829 
  830 /* Find the first occurrence of WC in WCS.  */
  831 #if @GNULIB_WCSCHR@
  832 # if !@HAVE_WCSCHR@
  833 _GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
  834                                      _GL_ATTRIBUTE_PURE);
  835 # endif
  836   /* On some systems, this function is defined as an overloaded function:
  837        extern "C++" {
  838          const wchar_t * std::wcschr (const wchar_t *, wchar_t);
  839          wchar_t * std::wcschr (wchar_t *, wchar_t);
  840        }  */
  841 _GL_CXXALIAS_SYS_CAST2 (wcschr,
  842                         wchar_t *, (const wchar_t *, wchar_t),
  843                         const wchar_t *, (const wchar_t *, wchar_t));
  844 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
  845      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
  846 _GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
  847 _GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
  848 # else
  849 _GL_CXXALIASWARN (wcschr);
  850 # endif
  851 #elif defined GNULIB_POSIXCHECK
  852 # undef wcschr
  853 # if HAVE_RAW_DECL_WCSCHR
  854 _GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
  855                  "use gnulib module wcschr for portability");
  856 # endif
  857 #endif
  858 
  859 
  860 /* Find the last occurrence of WC in WCS.  */
  861 #if @GNULIB_WCSRCHR@
  862 # if !@HAVE_WCSRCHR@
  863 _GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
  864                                       _GL_ATTRIBUTE_PURE);
  865 # endif
  866   /* On some systems, this function is defined as an overloaded function:
  867        extern "C++" {
  868          const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
  869          wchar_t * std::wcsrchr (wchar_t *, wchar_t);
  870        }  */
  871 _GL_CXXALIAS_SYS_CAST2 (wcsrchr,
  872                         wchar_t *, (const wchar_t *, wchar_t),
  873                         const wchar_t *, (const wchar_t *, wchar_t));
  874 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
  875      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
  876 _GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
  877 _GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
  878 # else
  879 _GL_CXXALIASWARN (wcsrchr);
  880 # endif
  881 #elif defined GNULIB_POSIXCHECK
  882 # undef wcsrchr
  883 # if HAVE_RAW_DECL_WCSRCHR
  884 _GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
  885                  "use gnulib module wcsrchr for portability");
  886 # endif
  887 #endif
  888 
  889 
  890 /* Return the length of the initial segmet of WCS which consists entirely
  891    of wide characters not in REJECT.  */
  892 #if @GNULIB_WCSCSPN@
  893 # if !@HAVE_WCSCSPN@
  894 _GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
  895                                    _GL_ATTRIBUTE_PURE);
  896 # endif
  897 _GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
  898 _GL_CXXALIASWARN (wcscspn);
  899 #elif defined GNULIB_POSIXCHECK
  900 # undef wcscspn
  901 # if HAVE_RAW_DECL_WCSCSPN
  902 _GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
  903                  "use gnulib module wcscspn for portability");
  904 # endif
  905 #endif
  906 
  907 
  908 /* Return the length of the initial segmet of WCS which consists entirely
  909    of wide characters in ACCEPT.  */
  910 #if @GNULIB_WCSSPN@
  911 # if !@HAVE_WCSSPN@
  912 _GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
  913                                   _GL_ATTRIBUTE_PURE);
  914 # endif
  915 _GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
  916 _GL_CXXALIASWARN (wcsspn);
  917 #elif defined GNULIB_POSIXCHECK
  918 # undef wcsspn
  919 # if HAVE_RAW_DECL_WCSSPN
  920 _GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
  921                  "use gnulib module wcsspn for portability");
  922 # endif
  923 #endif
  924 
  925 
  926 /* Find the first occurrence in WCS of any character in ACCEPT.  */
  927 #if @GNULIB_WCSPBRK@
  928 # if !@HAVE_WCSPBRK@
  929 _GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
  930                   (const wchar_t *wcs, const wchar_t *accept)
  931                   _GL_ATTRIBUTE_PURE);
  932 # endif
  933   /* On some systems, this function is defined as an overloaded function:
  934        extern "C++" {
  935          const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
  936          wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
  937        }  */
  938 _GL_CXXALIAS_SYS_CAST2 (wcspbrk,
  939                         wchar_t *, (const wchar_t *, const wchar_t *),
  940                         const wchar_t *, (const wchar_t *, const wchar_t *));
  941 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
  942      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
  943 _GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
  944                    (wchar_t *wcs, const wchar_t *accept));
  945 _GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
  946                    (const wchar_t *wcs, const wchar_t *accept));
  947 # else
  948 _GL_CXXALIASWARN (wcspbrk);
  949 # endif
  950 #elif defined GNULIB_POSIXCHECK
  951 # undef wcspbrk
  952 # if HAVE_RAW_DECL_WCSPBRK
  953 _GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
  954                  "use gnulib module wcspbrk for portability");
  955 # endif
  956 #endif
  957 
  958 
  959 /* Find the first occurrence of NEEDLE in HAYSTACK.  */
  960 #if @GNULIB_WCSSTR@
  961 # if !@HAVE_WCSSTR@
  962 _GL_FUNCDECL_SYS (wcsstr, wchar_t *,
  963                   (const wchar_t *haystack, const wchar_t *needle)
  964                   _GL_ATTRIBUTE_PURE);
  965 # endif
  966   /* On some systems, this function is defined as an overloaded function:
  967        extern "C++" {
  968          const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
  969          wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
  970        }  */
  971 _GL_CXXALIAS_SYS_CAST2 (wcsstr,
  972                         wchar_t *, (const wchar_t *, const wchar_t *),
  973                         const wchar_t *, (const wchar_t *, const wchar_t *));
  974 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
  975      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
  976 _GL_CXXALIASWARN1 (wcsstr, wchar_t *,
  977                    (wchar_t *haystack, const wchar_t *needle));
  978 _GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
  979                    (const wchar_t *haystack, const wchar_t *needle));
  980 # else
  981 _GL_CXXALIASWARN (wcsstr);
  982 # endif
  983 #elif defined GNULIB_POSIXCHECK
  984 # undef wcsstr
  985 # if HAVE_RAW_DECL_WCSSTR
  986 _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
  987                  "use gnulib module wcsstr for portability");
  988 # endif
  989 #endif
  990 
  991 
  992 /* Divide WCS into tokens separated by characters in DELIM.  */
  993 #if @GNULIB_WCSTOK@
  994 # if !@HAVE_WCSTOK@
  995 _GL_FUNCDECL_SYS (wcstok, wchar_t *,
  996                   (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
  997 # endif
  998 _GL_CXXALIAS_SYS (wcstok, wchar_t *,
  999                   (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
 1000 _GL_CXXALIASWARN (wcstok);
 1001 #elif defined GNULIB_POSIXCHECK
 1002 # undef wcstok
 1003 # if HAVE_RAW_DECL_WCSTOK
 1004 _GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
 1005                  "use gnulib module wcstok for portability");
 1006 # endif
 1007 #endif
 1008 
 1009 
 1010 /* Determine number of column positions required for first N wide
 1011    characters (or fewer if S ends before this) in S.  */
 1012 #if @GNULIB_WCSWIDTH@
 1013 # if @REPLACE_WCSWIDTH@
 1014 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 1015 #   undef wcswidth
 1016 #   define wcswidth rpl_wcswidth
 1017 #  endif
 1018 _GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
 1019                                  _GL_ATTRIBUTE_PURE);
 1020 _GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
 1021 # else
 1022 #  if !@HAVE_WCSWIDTH@
 1023 _GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
 1024                                  _GL_ATTRIBUTE_PURE);
 1025 #  endif
 1026 _GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
 1027 # endif
 1028 _GL_CXXALIASWARN (wcswidth);
 1029 #elif defined GNULIB_POSIXCHECK
 1030 # undef wcswidth
 1031 # if HAVE_RAW_DECL_WCSWIDTH
 1032 _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
 1033                  "use gnulib module wcswidth for portability");
 1034 # endif
 1035 #endif
 1036 
 1037 
 1038 /* Convert *TP to a date and time wide string.  See
 1039    <http://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>.  */
 1040 #if @GNULIB_WCSFTIME@
 1041 # if @REPLACE_WCSFTIME@
 1042 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 1043 #   undef wcsftime
 1044 #   define wcsftime rpl_wcsftime
 1045 #  endif
 1046 _GL_FUNCDECL_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
 1047                                      const wchar_t *__fmt, const struct tm *__tp)
 1048                                     _GL_ARG_NONNULL ((1, 3, 4)));
 1049 _GL_CXXALIAS_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
 1050                                      const wchar_t *__fmt, const struct tm *__tp));
 1051 # else
 1052 #  if !@HAVE_WCSFTIME@
 1053 _GL_FUNCDECL_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
 1054                                      const wchar_t *__fmt, const struct tm *__tp)
 1055                                     _GL_ARG_NONNULL ((1, 3, 4)));
 1056 #  endif
 1057 _GL_CXXALIAS_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
 1058                                      const wchar_t *__fmt, const struct tm *__tp));
 1059 # endif
 1060 _GL_CXXALIASWARN (wcsftime);
 1061 #elif defined GNULIB_POSIXCHECK
 1062 # undef wcsftime
 1063 # if HAVE_RAW_DECL_WCSFTIME
 1064 _GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
 1065                  "use gnulib module wcsftime for portability");
 1066 # endif
 1067 #endif
 1068 
 1069 
 1070 #endif /* _@GUARD_PREFIX@_WCHAR_H */
 1071 #endif /* _@GUARD_PREFIX@_WCHAR_H */
 1072 #endif