Blame lib/wchar.in.h

Packit 33f14e
/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
Packit 33f14e
Packit 33f14e
   Copyright (C) 2007-2017 Free Software Foundation, Inc.
Packit 33f14e
Packit 33f14e
   This program is free software; you can redistribute it and/or modify
Packit 33f14e
   it under the terms of the GNU General Public License as published by
Packit 33f14e
   the Free Software Foundation; either version 3, or (at your option)
Packit 33f14e
   any later version.
Packit 33f14e
Packit 33f14e
   This program is distributed in the hope that it will be useful,
Packit 33f14e
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 33f14e
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 33f14e
   GNU General Public License for more details.
Packit 33f14e
Packit 33f14e
   You should have received a copy of the GNU General Public License
Packit 33f14e
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit 33f14e
Packit 33f14e
/* Written by Eric Blake.  */
Packit 33f14e
Packit 33f14e
/*
Packit 33f14e
 * ISO C 99 <wchar.h> for platforms that have issues.
Packit 33f14e
 * <http://www.opengroup.org/susv3xbd/wchar.h.html>
Packit 33f14e
 *
Packit 33f14e
 * For now, this just ensures proper prerequisite inclusion order and
Packit 33f14e
 * the declaration of wcwidth().
Packit 33f14e
 */
Packit 33f14e
Packit 33f14e
#if __GNUC__ >= 3
Packit 33f14e
@PRAGMA_SYSTEM_HEADER@
Packit 33f14e
#endif
Packit 33f14e
@PRAGMA_COLUMNS@
Packit 33f14e
Packit 33f14e
#if (((defined __need_mbstate_t || defined __need_wint_t)               \
Packit 33f14e
      && !defined __MINGW32__ && !defined __KLIBC__)                    \
Packit 33f14e
     || (defined __hpux                                                 \
Packit 33f14e
         && ((defined _INTTYPES_INCLUDED && !defined strtoimax)         \
Packit 33f14e
             || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H))               \
Packit 33f14e
     || (defined __MINGW32__ && defined __STRING_H_SOURCED__)           \
Packit 33f14e
     || defined _GL_ALREADY_INCLUDING_WCHAR_H)
Packit 33f14e
/* Special invocation convention:
Packit 33f14e
   - Inside glibc and uClibc header files, but not MinGW.
Packit 33f14e
   - On HP-UX 11.00 we have a sequence of nested includes
Packit 33f14e
     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
Packit 33f14e
     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
Packit 33f14e
     and once directly.  In both situations 'wint_t' is not yet defined,
Packit 33f14e
     therefore we cannot provide the function overrides; instead include only
Packit 33f14e
     the system's <wchar.h>.
Packit 33f14e
   - With MinGW 3.22, when <string.h> includes <wchar.h>, only some part of
Packit 33f14e
     <wchar.h> is actually processed, and that doesn't include 'mbstate_t'.
Packit 33f14e
   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
Packit 33f14e
     the latter includes <wchar.h>.  But here, we have no way to detect whether
Packit 33f14e
     <wctype.h> is completely included or is still being included.  */
Packit 33f14e
Packit 33f14e
#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
Packit 33f14e
Packit 33f14e
#else
Packit 33f14e
/* Normal invocation convention.  */
Packit 33f14e
Packit 33f14e
#ifndef _@GUARD_PREFIX@_WCHAR_H
Packit 33f14e
Packit 33f14e
#define _GL_ALREADY_INCLUDING_WCHAR_H
Packit 33f14e
Packit 33f14e
#if @HAVE_FEATURES_H@
Packit 33f14e
# include <features.h> /* for __GLIBC__ */
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
Packit 33f14e
   <wchar.h>.
Packit 33f14e
   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
Packit 33f14e
   included before <wchar.h>.
Packit 33f14e
   In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
Packit 33f14e
   by <stddef.h>.
Packit 33f14e
   But avoid namespace pollution on glibc systems.  */
Packit 33f14e
#if !(defined __GLIBC__ && !defined __UCLIBC__)
Packit 33f14e
# include <stddef.h>
Packit 33f14e
#endif
Packit 33f14e
#ifndef __GLIBC__
Packit 33f14e
# include <stdio.h>
Packit 33f14e
# include <time.h>
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
/* Include the original <wchar.h> if it exists.
Packit 33f14e
   Some builds of uClibc lack it.  */
Packit 33f14e
/* The include_next requires a split double-inclusion guard.  */
Packit 33f14e
#if @HAVE_WCHAR_H@
Packit 33f14e
# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
#undef _GL_ALREADY_INCLUDING_WCHAR_H
Packit 33f14e
Packit 33f14e
#ifndef _@GUARD_PREFIX@_WCHAR_H
Packit 33f14e
#define _@GUARD_PREFIX@_WCHAR_H
Packit 33f14e
Packit 33f14e
/* The __attribute__ feature is available in gcc versions 2.5 and later.
Packit 33f14e
   The attribute __pure__ was added in gcc 2.96.  */
Packit 33f14e
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
Packit 33f14e
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
Packit 33f14e
#else
Packit 33f14e
# define _GL_ATTRIBUTE_PURE /* empty */
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit 33f14e
Packit 33f14e
/* The definition of _GL_ARG_NONNULL is copied here.  */
Packit 33f14e
Packit 33f14e
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
Packit 33f14e
#if !@HAVE_WINT_T@ && !defined wint_t
Packit 33f14e
# define wint_t int
Packit 33f14e
# ifndef WEOF
Packit 33f14e
#  define WEOF -1
Packit 33f14e
# endif
Packit 33f14e
#else
Packit 33f14e
/* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
Packit 33f14e
   <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
Packit 33f14e
   wint_t must be "unchanged by default argument promotions".  Override it.  */
Packit 33f14e
# if @GNULIB_OVERRIDES_WINT_T@
Packit 33f14e
#  if !GNULIB_defined_wint_t
Packit 33f14e
#   if @HAVE_CRTDEFS_H@
Packit 33f14e
#    include <crtdefs.h>
Packit 33f14e
#   else
Packit 33f14e
#    include <stddef.h>
Packit 33f14e
#   endif
Packit 33f14e
typedef unsigned int rpl_wint_t;
Packit 33f14e
#   undef wint_t
Packit 33f14e
#   define wint_t rpl_wint_t
Packit 33f14e
#   define GNULIB_defined_wint_t 1
Packit 33f14e
#  endif
Packit 33f14e
# endif
Packit 33f14e
# ifndef WEOF
Packit 33f14e
#  define WEOF ((wint_t) -1)
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Override mbstate_t if it is too small.
Packit 33f14e
   On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
Packit 33f14e
   implementing mbrtowc for encodings like UTF-8.  */
Packit 33f14e
#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
Packit 33f14e
# if !GNULIB_defined_mbstate_t
Packit 33f14e
typedef int rpl_mbstate_t;
Packit 33f14e
#  undef mbstate_t
Packit 33f14e
#  define mbstate_t rpl_mbstate_t
Packit 33f14e
#  define GNULIB_defined_mbstate_t 1
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a single-byte character to a wide character.  */
Packit 33f14e
#if @GNULIB_BTOWC@
Packit 33f14e
# if @REPLACE_BTOWC@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef btowc
Packit 33f14e
#   define btowc rpl_btowc
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
Packit 33f14e
_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_BTOWC@
Packit 33f14e
_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (btowc);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef btowc
Packit 33f14e
# if HAVE_RAW_DECL_BTOWC
Packit 33f14e
_GL_WARN_ON_USE (btowc, "btowc is unportable - "
Packit 33f14e
                 "use gnulib module btowc for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a wide character to a single-byte character.  */
Packit 33f14e
#if @GNULIB_WCTOB@
Packit 33f14e
# if @REPLACE_WCTOB@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wctob
Packit 33f14e
#   define wctob rpl_wctob
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
Packit 33f14e
_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
Packit 33f14e
# else
Packit 33f14e
#  if !defined wctob && !@HAVE_DECL_WCTOB@
Packit 33f14e
/* wctob is provided by gnulib, or wctob exists but is not declared.  */
Packit 33f14e
_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wctob);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wctob
Packit 33f14e
# if HAVE_RAW_DECL_WCTOB
Packit 33f14e
_GL_WARN_ON_USE (wctob, "wctob is unportable - "
Packit 33f14e
                 "use gnulib module wctob for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Test whether *PS is in the initial state.  */
Packit 33f14e
#if @GNULIB_MBSINIT@
Packit 33f14e
# if @REPLACE_MBSINIT@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef mbsinit
Packit 33f14e
#   define mbsinit rpl_mbsinit
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
Packit 33f14e
_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_MBSINIT@
Packit 33f14e
_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (mbsinit);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef mbsinit
Packit 33f14e
# if HAVE_RAW_DECL_MBSINIT
Packit 33f14e
_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
Packit 33f14e
                 "use gnulib module mbsinit for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a multibyte character to a wide character.  */
Packit 33f14e
#if @GNULIB_MBRTOWC@
Packit 33f14e
# if @REPLACE_MBRTOWC@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef mbrtowc
Packit 33f14e
#   define mbrtowc rpl_mbrtowc
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (mbrtowc, size_t,
Packit 33f14e
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
_GL_CXXALIAS_RPL (mbrtowc, size_t,
Packit 33f14e
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_MBRTOWC@
Packit 33f14e
_GL_FUNCDECL_SYS (mbrtowc, size_t,
Packit 33f14e
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (mbrtowc, size_t,
Packit 33f14e
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (mbrtowc);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef mbrtowc
Packit 33f14e
# if HAVE_RAW_DECL_MBRTOWC
Packit 33f14e
_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
Packit 33f14e
                 "use gnulib module mbrtowc for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Recognize a multibyte character.  */
Packit 33f14e
#if @GNULIB_MBRLEN@
Packit 33f14e
# if @REPLACE_MBRLEN@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef mbrlen
Packit 33f14e
#   define mbrlen rpl_mbrlen
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_MBRLEN@
Packit 33f14e
_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (mbrlen);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef mbrlen
Packit 33f14e
# if HAVE_RAW_DECL_MBRLEN
Packit 33f14e
_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
Packit 33f14e
                 "use gnulib module mbrlen for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a string to a wide string.  */
Packit 33f14e
#if @GNULIB_MBSRTOWCS@
Packit 33f14e
# if @REPLACE_MBSRTOWCS@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef mbsrtowcs
Packit 33f14e
#   define mbsrtowcs rpl_mbsrtowcs
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (mbsrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
_GL_CXXALIAS_RPL (mbsrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_MBSRTOWCS@
Packit 33f14e
_GL_FUNCDECL_SYS (mbsrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (mbsrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (mbsrtowcs);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef mbsrtowcs
Packit 33f14e
# if HAVE_RAW_DECL_MBSRTOWCS
Packit 33f14e
_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
Packit 33f14e
                 "use gnulib module mbsrtowcs for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a string to a wide string.  */
Packit 33f14e
#if @GNULIB_MBSNRTOWCS@
Packit 33f14e
# if @REPLACE_MBSNRTOWCS@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef mbsnrtowcs
Packit 33f14e
#   define mbsnrtowcs rpl_mbsnrtowcs
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
_GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_MBSNRTOWCS@
Packit 33f14e
_GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
Packit 33f14e
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (mbsnrtowcs);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef mbsnrtowcs
Packit 33f14e
# if HAVE_RAW_DECL_MBSNRTOWCS
Packit 33f14e
_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
Packit 33f14e
                 "use gnulib module mbsnrtowcs for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a wide character to a multibyte character.  */
Packit 33f14e
#if @GNULIB_WCRTOMB@
Packit 33f14e
# if @REPLACE_WCRTOMB@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wcrtomb
Packit 33f14e
#   define wcrtomb rpl_wcrtomb
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit 33f14e
_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_WCRTOMB@
Packit 33f14e
_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wcrtomb);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcrtomb
Packit 33f14e
# if HAVE_RAW_DECL_WCRTOMB
Packit 33f14e
_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
Packit 33f14e
                 "use gnulib module wcrtomb for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a wide string to a string.  */
Packit 33f14e
#if @GNULIB_WCSRTOMBS@
Packit 33f14e
# if @REPLACE_WCSRTOMBS@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wcsrtombs
Packit 33f14e
#   define wcsrtombs rpl_wcsrtombs
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wcsrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
_GL_CXXALIAS_RPL (wcsrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_WCSRTOMBS@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wcsrtombs);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsrtombs
Packit 33f14e
# if HAVE_RAW_DECL_WCSRTOMBS
Packit 33f14e
_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
Packit 33f14e
                 "use gnulib module wcsrtombs for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert a wide string to a string.  */
Packit 33f14e
#if @GNULIB_WCSNRTOMBS@
Packit 33f14e
# if @REPLACE_WCSNRTOMBS@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wcsnrtombs
Packit 33f14e
#   define wcsnrtombs rpl_wcsnrtombs
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wcsnrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
_GL_CXXALIAS_RPL (wcsnrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_WCSNRTOMBS@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsnrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps)
Packit 33f14e
                  _GL_ARG_NONNULL ((2)));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsnrtombs, size_t,
Packit 33f14e
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit 33f14e
                   mbstate_t *ps));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wcsnrtombs);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsnrtombs
Packit 33f14e
# if HAVE_RAW_DECL_WCSNRTOMBS
Packit 33f14e
_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
Packit 33f14e
                 "use gnulib module wcsnrtombs for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Return the number of screen columns needed for WC.  */
Packit 33f14e
#if @GNULIB_WCWIDTH@
Packit 33f14e
# if @REPLACE_WCWIDTH@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wcwidth
Packit 33f14e
#   define wcwidth rpl_wcwidth
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
Packit 33f14e
_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_DECL_WCWIDTH@
Packit 33f14e
/* wcwidth exists but is not declared.  */
Packit 33f14e
_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
Packit 33f14e
#  elif defined __KLIBC__
Packit 33f14e
/* On OS/2 kLIBC, wcwidth is a macro that expands to the name of a
Packit 33f14e
   static inline function.  The implementation of wcwidth in wcwidth.c
Packit 33f14e
   causes a "conflicting types" error. */
Packit 33f14e
#   undef wcwidth
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wcwidth);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcwidth
Packit 33f14e
# if HAVE_RAW_DECL_WCWIDTH
Packit 33f14e
_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
Packit 33f14e
                 "use gnulib module wcwidth for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Search N wide characters of S for C.  */
Packit 33f14e
#if @GNULIB_WMEMCHR@
Packit 33f14e
# if !@HAVE_WMEMCHR@
Packit 33f14e
_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
Packit 33f14e
                                      _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
  /* On some systems, this function is defined as an overloaded function:
Packit 33f14e
       extern "C++" {
Packit 33f14e
         const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
Packit 33f14e
         wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
Packit 33f14e
       }  */
Packit 33f14e
_GL_CXXALIAS_SYS_CAST2 (wmemchr,
Packit 33f14e
                        wchar_t *, (const wchar_t *, wchar_t, size_t),
Packit 33f14e
                        const wchar_t *, (const wchar_t *, wchar_t, size_t));
Packit 33f14e
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit 33f14e
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit 33f14e
_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
Packit 33f14e
_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
Packit 33f14e
                   (const wchar_t *s, wchar_t c, size_t n));
Packit 33f14e
# else
Packit 33f14e
_GL_CXXALIASWARN (wmemchr);
Packit 33f14e
# endif
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wmemchr
Packit 33f14e
# if HAVE_RAW_DECL_WMEMCHR
Packit 33f14e
_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
Packit 33f14e
                 "use gnulib module wmemchr for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Compare N wide characters of S1 and S2.  */
Packit 33f14e
#if @GNULIB_WMEMCMP@
Packit 33f14e
# if !@HAVE_WMEMCMP@
Packit 33f14e
_GL_FUNCDECL_SYS (wmemcmp, int,
Packit 33f14e
                  (const wchar_t *s1, const wchar_t *s2, size_t n)
Packit 33f14e
                  _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wmemcmp, int,
Packit 33f14e
                  (const wchar_t *s1, const wchar_t *s2, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wmemcmp);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wmemcmp
Packit 33f14e
# if HAVE_RAW_DECL_WMEMCMP
Packit 33f14e
_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
Packit 33f14e
                 "use gnulib module wmemcmp for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Copy N wide characters of SRC to DEST.  */
Packit 33f14e
#if @GNULIB_WMEMCPY@
Packit 33f14e
# if !@HAVE_WMEMCPY@
Packit 33f14e
_GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wmemcpy);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wmemcpy
Packit 33f14e
# if HAVE_RAW_DECL_WMEMCPY
Packit 33f14e
_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
Packit 33f14e
                 "use gnulib module wmemcpy for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
Packit 33f14e
   overlapping memory areas.  */
Packit 33f14e
#if @GNULIB_WMEMMOVE@
Packit 33f14e
# if !@HAVE_WMEMMOVE@
Packit 33f14e
_GL_FUNCDECL_SYS (wmemmove, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wmemmove);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wmemmove
Packit 33f14e
# if HAVE_RAW_DECL_WMEMMOVE
Packit 33f14e
_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
Packit 33f14e
                 "use gnulib module wmemmove for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Set N wide characters of S to C.  */
Packit 33f14e
#if @GNULIB_WMEMSET@
Packit 33f14e
# if !@HAVE_WMEMSET@
Packit 33f14e
_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wmemset);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wmemset
Packit 33f14e
# if HAVE_RAW_DECL_WMEMSET
Packit 33f14e
_GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
Packit 33f14e
                 "use gnulib module wmemset for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Return the number of wide characters in S.  */
Packit 33f14e
#if @GNULIB_WCSLEN@
Packit 33f14e
# if !@HAVE_WCSLEN@
Packit 33f14e
_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
Packit 33f14e
_GL_CXXALIASWARN (wcslen);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcslen
Packit 33f14e
# if HAVE_RAW_DECL_WCSLEN
Packit 33f14e
_GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
Packit 33f14e
                 "use gnulib module wcslen for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Return the number of wide characters in S, but at most MAXLEN.  */
Packit 33f14e
#if @GNULIB_WCSNLEN@
Packit 33f14e
# if !@HAVE_WCSNLEN@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
Packit 33f14e
                                   _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
Packit 33f14e
_GL_CXXALIASWARN (wcsnlen);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsnlen
Packit 33f14e
# if HAVE_RAW_DECL_WCSNLEN
Packit 33f14e
_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
Packit 33f14e
                 "use gnulib module wcsnlen for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Copy SRC to DEST.  */
Packit 33f14e
#if @GNULIB_WCSCPY@
Packit 33f14e
# if !@HAVE_WCSCPY@
Packit 33f14e
_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit 33f14e
_GL_CXXALIASWARN (wcscpy);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcscpy
Packit 33f14e
# if HAVE_RAW_DECL_WCSCPY
Packit 33f14e
_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
Packit 33f14e
                 "use gnulib module wcscpy for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST.  */
Packit 33f14e
#if @GNULIB_WCPCPY@
Packit 33f14e
# if !@HAVE_WCPCPY@
Packit 33f14e
_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit 33f14e
_GL_CXXALIASWARN (wcpcpy);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcpcpy
Packit 33f14e
# if HAVE_RAW_DECL_WCPCPY
Packit 33f14e
_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
Packit 33f14e
                 "use gnulib module wcpcpy for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Copy no more than N wide characters of SRC to DEST.  */
Packit 33f14e
#if @GNULIB_WCSNCPY@
Packit 33f14e
# if !@HAVE_WCSNCPY@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wcsncpy);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsncpy
Packit 33f14e
# if HAVE_RAW_DECL_WCSNCPY
Packit 33f14e
_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
Packit 33f14e
                 "use gnulib module wcsncpy for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Copy no more than N characters of SRC to DEST, returning the address of
Packit 33f14e
   the last character written into DEST.  */
Packit 33f14e
#if @GNULIB_WCPNCPY@
Packit 33f14e
# if !@HAVE_WCPNCPY@
Packit 33f14e
_GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wcpncpy);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcpncpy
Packit 33f14e
# if HAVE_RAW_DECL_WCPNCPY
Packit 33f14e
_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
Packit 33f14e
                 "use gnulib module wcpncpy for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Append SRC onto DEST.  */
Packit 33f14e
#if @GNULIB_WCSCAT@
Packit 33f14e
# if !@HAVE_WCSCAT@
Packit 33f14e
_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit 33f14e
_GL_CXXALIASWARN (wcscat);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcscat
Packit 33f14e
# if HAVE_RAW_DECL_WCSCAT
Packit 33f14e
_GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
Packit 33f14e
                 "use gnulib module wcscat for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Append no more than N wide characters of SRC onto DEST.  */
Packit 33f14e
#if @GNULIB_WCSNCAT@
Packit 33f14e
# if !@HAVE_WCSNCAT@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsncat, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
Packit 33f14e
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wcsncat);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsncat
Packit 33f14e
# if HAVE_RAW_DECL_WCSNCAT
Packit 33f14e
_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
Packit 33f14e
                 "use gnulib module wcsncat for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Compare S1 and S2.  */
Packit 33f14e
#if @GNULIB_WCSCMP@
Packit 33f14e
# if !@HAVE_WCSCMP@
Packit 33f14e
_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
Packit 33f14e
                               _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
Packit 33f14e
_GL_CXXALIASWARN (wcscmp);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcscmp
Packit 33f14e
# if HAVE_RAW_DECL_WCSCMP
Packit 33f14e
_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
Packit 33f14e
                 "use gnulib module wcscmp for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Compare no more than N wide characters of S1 and S2.  */
Packit 33f14e
#if @GNULIB_WCSNCMP@
Packit 33f14e
# if !@HAVE_WCSNCMP@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsncmp, int,
Packit 33f14e
                  (const wchar_t *s1, const wchar_t *s2, size_t n)
Packit 33f14e
                  _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsncmp, int,
Packit 33f14e
                  (const wchar_t *s1, const wchar_t *s2, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wcsncmp);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsncmp
Packit 33f14e
# if HAVE_RAW_DECL_WCSNCMP
Packit 33f14e
_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
Packit 33f14e
                 "use gnulib module wcsncmp for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Compare S1 and S2, ignoring case.  */
Packit 33f14e
#if @GNULIB_WCSCASECMP@
Packit 33f14e
# if !@HAVE_WCSCASECMP@
Packit 33f14e
_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
Packit 33f14e
                                   _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
Packit 33f14e
_GL_CXXALIASWARN (wcscasecmp);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcscasecmp
Packit 33f14e
# if HAVE_RAW_DECL_WCSCASECMP
Packit 33f14e
_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
Packit 33f14e
                 "use gnulib module wcscasecmp for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Compare no more than N chars of S1 and S2, ignoring case.  */
Packit 33f14e
#if @GNULIB_WCSNCASECMP@
Packit 33f14e
# if !@HAVE_WCSNCASECMP@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsncasecmp, int,
Packit 33f14e
                  (const wchar_t *s1, const wchar_t *s2, size_t n)
Packit 33f14e
                  _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsncasecmp, int,
Packit 33f14e
                  (const wchar_t *s1, const wchar_t *s2, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wcsncasecmp);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsncasecmp
Packit 33f14e
# if HAVE_RAW_DECL_WCSNCASECMP
Packit 33f14e
_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
Packit 33f14e
                 "use gnulib module wcsncasecmp for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
Packit 33f14e
   category of the current locale.  */
Packit 33f14e
#if @GNULIB_WCSCOLL@
Packit 33f14e
# if !@HAVE_WCSCOLL@
Packit 33f14e
_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
Packit 33f14e
_GL_CXXALIASWARN (wcscoll);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcscoll
Packit 33f14e
# if HAVE_RAW_DECL_WCSCOLL
Packit 33f14e
_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
Packit 33f14e
                 "use gnulib module wcscoll for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Transform S2 into array pointed to by S1 such that if wcscmp is applied
Packit 33f14e
   to two transformed strings the result is the as applying 'wcscoll' to the
Packit 33f14e
   original strings.  */
Packit 33f14e
#if @GNULIB_WCSXFRM@
Packit 33f14e
# if !@HAVE_WCSXFRM@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
Packit 33f14e
_GL_CXXALIASWARN (wcsxfrm);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsxfrm
Packit 33f14e
# if HAVE_RAW_DECL_WCSXFRM
Packit 33f14e
_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
Packit 33f14e
                 "use gnulib module wcsxfrm for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Duplicate S, returning an identical malloc'd string.  */
Packit 33f14e
#if @GNULIB_WCSDUP@
Packit 33f14e
# if !@HAVE_WCSDUP@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
Packit 33f14e
_GL_CXXALIASWARN (wcsdup);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsdup
Packit 33f14e
# if HAVE_RAW_DECL_WCSDUP
Packit 33f14e
_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
Packit 33f14e
                 "use gnulib module wcsdup for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Find the first occurrence of WC in WCS.  */
Packit 33f14e
#if @GNULIB_WCSCHR@
Packit 33f14e
# if !@HAVE_WCSCHR@
Packit 33f14e
_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
Packit 33f14e
                                     _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
  /* On some systems, this function is defined as an overloaded function:
Packit 33f14e
       extern "C++" {
Packit 33f14e
         const wchar_t * std::wcschr (const wchar_t *, wchar_t);
Packit 33f14e
         wchar_t * std::wcschr (wchar_t *, wchar_t);
Packit 33f14e
       }  */
Packit 33f14e
_GL_CXXALIAS_SYS_CAST2 (wcschr,
Packit 33f14e
                        wchar_t *, (const wchar_t *, wchar_t),
Packit 33f14e
                        const wchar_t *, (const wchar_t *, wchar_t));
Packit 33f14e
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit 33f14e
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit 33f14e
_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
Packit 33f14e
_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
Packit 33f14e
# else
Packit 33f14e
_GL_CXXALIASWARN (wcschr);
Packit 33f14e
# endif
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcschr
Packit 33f14e
# if HAVE_RAW_DECL_WCSCHR
Packit 33f14e
_GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
Packit 33f14e
                 "use gnulib module wcschr for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Find the last occurrence of WC in WCS.  */
Packit 33f14e
#if @GNULIB_WCSRCHR@
Packit 33f14e
# if !@HAVE_WCSRCHR@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
Packit 33f14e
                                      _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
  /* On some systems, this function is defined as an overloaded function:
Packit 33f14e
       extern "C++" {
Packit 33f14e
         const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
Packit 33f14e
         wchar_t * std::wcsrchr (wchar_t *, wchar_t);
Packit 33f14e
       }  */
Packit 33f14e
_GL_CXXALIAS_SYS_CAST2 (wcsrchr,
Packit 33f14e
                        wchar_t *, (const wchar_t *, wchar_t),
Packit 33f14e
                        const wchar_t *, (const wchar_t *, wchar_t));
Packit 33f14e
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit 33f14e
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit 33f14e
_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
Packit 33f14e
_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
Packit 33f14e
# else
Packit 33f14e
_GL_CXXALIASWARN (wcsrchr);
Packit 33f14e
# endif
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsrchr
Packit 33f14e
# if HAVE_RAW_DECL_WCSRCHR
Packit 33f14e
_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
Packit 33f14e
                 "use gnulib module wcsrchr for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Return the length of the initial segmet of WCS which consists entirely
Packit 33f14e
   of wide characters not in REJECT.  */
Packit 33f14e
#if @GNULIB_WCSCSPN@
Packit 33f14e
# if !@HAVE_WCSCSPN@
Packit 33f14e
_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
Packit 33f14e
                                   _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
Packit 33f14e
_GL_CXXALIASWARN (wcscspn);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcscspn
Packit 33f14e
# if HAVE_RAW_DECL_WCSCSPN
Packit 33f14e
_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
Packit 33f14e
                 "use gnulib module wcscspn for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Return the length of the initial segmet of WCS which consists entirely
Packit 33f14e
   of wide characters in ACCEPT.  */
Packit 33f14e
#if @GNULIB_WCSSPN@
Packit 33f14e
# if !@HAVE_WCSSPN@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
Packit 33f14e
                                  _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
Packit 33f14e
_GL_CXXALIASWARN (wcsspn);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsspn
Packit 33f14e
# if HAVE_RAW_DECL_WCSSPN
Packit 33f14e
_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
Packit 33f14e
                 "use gnulib module wcsspn for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Find the first occurrence in WCS of any character in ACCEPT.  */
Packit 33f14e
#if @GNULIB_WCSPBRK@
Packit 33f14e
# if !@HAVE_WCSPBRK@
Packit 33f14e
_GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
Packit 33f14e
                  (const wchar_t *wcs, const wchar_t *accept)
Packit 33f14e
                  _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
  /* On some systems, this function is defined as an overloaded function:
Packit 33f14e
       extern "C++" {
Packit 33f14e
         const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
Packit 33f14e
         wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
Packit 33f14e
       }  */
Packit 33f14e
_GL_CXXALIAS_SYS_CAST2 (wcspbrk,
Packit 33f14e
                        wchar_t *, (const wchar_t *, const wchar_t *),
Packit 33f14e
                        const wchar_t *, (const wchar_t *, const wchar_t *));
Packit 33f14e
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit 33f14e
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit 33f14e
_GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
Packit 33f14e
                   (wchar_t *wcs, const wchar_t *accept));
Packit 33f14e
_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
Packit 33f14e
                   (const wchar_t *wcs, const wchar_t *accept));
Packit 33f14e
# else
Packit 33f14e
_GL_CXXALIASWARN (wcspbrk);
Packit 33f14e
# endif
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcspbrk
Packit 33f14e
# if HAVE_RAW_DECL_WCSPBRK
Packit 33f14e
_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
Packit 33f14e
                 "use gnulib module wcspbrk for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Find the first occurrence of NEEDLE in HAYSTACK.  */
Packit 33f14e
#if @GNULIB_WCSSTR@
Packit 33f14e
# if !@HAVE_WCSSTR@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsstr, wchar_t *,
Packit 33f14e
                  (const wchar_t *haystack, const wchar_t *needle)
Packit 33f14e
                  _GL_ATTRIBUTE_PURE);
Packit 33f14e
# endif
Packit 33f14e
  /* On some systems, this function is defined as an overloaded function:
Packit 33f14e
       extern "C++" {
Packit 33f14e
         const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
Packit 33f14e
         wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
Packit 33f14e
       }  */
Packit 33f14e
_GL_CXXALIAS_SYS_CAST2 (wcsstr,
Packit 33f14e
                        wchar_t *, (const wchar_t *, const wchar_t *),
Packit 33f14e
                        const wchar_t *, (const wchar_t *, const wchar_t *));
Packit 33f14e
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit 33f14e
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit 33f14e
_GL_CXXALIASWARN1 (wcsstr, wchar_t *,
Packit 33f14e
                   (wchar_t *haystack, const wchar_t *needle));
Packit 33f14e
_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
Packit 33f14e
                   (const wchar_t *haystack, const wchar_t *needle));
Packit 33f14e
# else
Packit 33f14e
_GL_CXXALIASWARN (wcsstr);
Packit 33f14e
# endif
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsstr
Packit 33f14e
# if HAVE_RAW_DECL_WCSSTR
Packit 33f14e
_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
Packit 33f14e
                 "use gnulib module wcsstr for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Divide WCS into tokens separated by characters in DELIM.  */
Packit 33f14e
#if @GNULIB_WCSTOK@
Packit 33f14e
# if !@HAVE_WCSTOK@
Packit 33f14e
_GL_FUNCDECL_SYS (wcstok, wchar_t *,
Packit 33f14e
                  (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcstok, wchar_t *,
Packit 33f14e
                  (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
Packit 33f14e
_GL_CXXALIASWARN (wcstok);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcstok
Packit 33f14e
# if HAVE_RAW_DECL_WCSTOK
Packit 33f14e
_GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
Packit 33f14e
                 "use gnulib module wcstok for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Determine number of column positions required for first N wide
Packit 33f14e
   characters (or fewer if S ends before this) in S.  */
Packit 33f14e
#if @GNULIB_WCSWIDTH@
Packit 33f14e
# if @REPLACE_WCSWIDTH@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wcswidth
Packit 33f14e
#   define wcswidth rpl_wcswidth
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
Packit 33f14e
                                 _GL_ATTRIBUTE_PURE);
Packit 33f14e
_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_WCSWIDTH@
Packit 33f14e
_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
Packit 33f14e
                                 _GL_ATTRIBUTE_PURE);
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wcswidth);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcswidth
Packit 33f14e
# if HAVE_RAW_DECL_WCSWIDTH
Packit 33f14e
_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
Packit 33f14e
                 "use gnulib module wcswidth for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Convert *TP to a date and time wide string.  See
Packit 33f14e
   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>.  */
Packit 33f14e
#if @GNULIB_WCSFTIME@
Packit 33f14e
# if @REPLACE_WCSFTIME@
Packit 33f14e
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 33f14e
#   undef wcsftime
Packit 33f14e
#   define wcsftime rpl_wcsftime
Packit 33f14e
#  endif
Packit 33f14e
_GL_FUNCDECL_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit 33f14e
                                     const wchar_t *__fmt, const struct tm *__tp)
Packit 33f14e
                                    _GL_ARG_NONNULL ((1, 3, 4)));
Packit 33f14e
_GL_CXXALIAS_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit 33f14e
                                     const wchar_t *__fmt, const struct tm *__tp));
Packit 33f14e
# else
Packit 33f14e
#  if !@HAVE_WCSFTIME@
Packit 33f14e
_GL_FUNCDECL_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit 33f14e
                                     const wchar_t *__fmt, const struct tm *__tp)
Packit 33f14e
                                    _GL_ARG_NONNULL ((1, 3, 4)));
Packit 33f14e
#  endif
Packit 33f14e
_GL_CXXALIAS_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit 33f14e
                                     const wchar_t *__fmt, const struct tm *__tp));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIASWARN (wcsftime);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef wcsftime
Packit 33f14e
# if HAVE_RAW_DECL_WCSFTIME
Packit 33f14e
_GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
Packit 33f14e
                 "use gnulib module wcsftime for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
#endif /* _@GUARD_PREFIX@_WCHAR_H */
Packit 33f14e
#endif /* _@GUARD_PREFIX@_WCHAR_H */
Packit 33f14e
#endif