105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A substitute for ISO C99 <wchar.h>, for platforms that have issues. 205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 305436638acc7c010349a69c3395f1a57c642dc62Ying Wang Copyright (C) 2007-2012 Free Software Foundation, Inc. 405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 505436638acc7c010349a69c3395f1a57c642dc62Ying Wang This program is free software; you can redistribute it and/or modify 605436638acc7c010349a69c3395f1a57c642dc62Ying Wang it under the terms of the GNU General Public License as published by 705436638acc7c010349a69c3395f1a57c642dc62Ying Wang the Free Software Foundation; either version 3, or (at your option) 805436638acc7c010349a69c3395f1a57c642dc62Ying Wang any later version. 905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang This program is distributed in the hope that it will be useful, 1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang but WITHOUT ANY WARRANTY; without even the implied warranty of 1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang GNU General Public License for more details. 1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang You should have received a copy of the GNU General Public License 1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang along with this program; if not, see <http://www.gnu.org/licenses/>. */ 1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Written by Eric Blake. */ 1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* 2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * ISO C 99 <wchar.h> for platforms that have issues. 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * <http://www.opengroup.org/susv3xbd/wchar.h.html> 2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * 2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * For now, this just ensures proper prerequisite inclusion order and 2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * the declaration of wcwidth(). 2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */ 2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3 2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_SYSTEM_HEADER@ 3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_COLUMNS@ 3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H 3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention: 3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Inside glibc and uClibc header files. 3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang - On HP-UX 11.00 we have a sequence of nested includes 3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>, 3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h> 3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang and once directly. In both situations 'wint_t' is not yet defined, 4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang therefore we cannot provide the function overrides; instead include only 4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang the system's <wchar.h>. 4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and 4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang the latter includes <wchar.h>. But here, we have no way to detect whether 4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang <wctype.h> is completely included or is still being included. */ 4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#@INCLUDE_NEXT@ @NEXT_WCHAR_H@ 4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation convention. */ 5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _@GUARD_PREFIX@_WCHAR_H 5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_ALREADY_INCLUDING_WCHAR_H 5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @HAVE_FEATURES_H@ 5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <features.h> /* for __GLIBC__ */ 5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before 6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang <wchar.h>. 6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be 6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang included before <wchar.h>. 6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined 6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang by <stddef.h>. 6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang But avoid namespace pollution on glibc systems. */ 6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !(defined __GLIBC__ && !defined __UCLIBC__) 6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stddef.h> 6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef __GLIBC__ 7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdio.h> 7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <time.h> 7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Include the original <wchar.h> if it exists. 7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang Some builds of uClibc lack it. */ 7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard. */ 7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @HAVE_WCHAR_H@ 7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# @INCLUDE_NEXT@ @NEXT_WCHAR_H@ 7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef _GL_ALREADY_INCLUDING_WCHAR_H 8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _@GUARD_PREFIX@_WCHAR_H 8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _@GUARD_PREFIX@_WCHAR_H 8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The __attribute__ feature is available in gcc versions 2.5 and later. 8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang The attribute __pure__ was added in gcc 2.96. */ 8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) 8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) 9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_ATTRIBUTE_PURE /* empty */ 9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here. */ 9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here. */ 9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define wint_t and WEOF. (Also done in wctype.in.h.) */ 10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !@HAVE_WINT_T@ && !defined wint_t 10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wint_t int 10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef WEOF 10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define WEOF -1 10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>. 10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be 11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang "unchanged by default argument promotions". Override it. */ 11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined _MSC_VER 11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_wint_t 11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <crtdefs.h> 11405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int rpl_wint_t; 11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wint_t 11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wint_t rpl_wint_t 11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GNULIB_defined_wint_t 1 11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef WEOF 12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define WEOF ((wint_t) -1) 12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Override mbstate_t if it is too small. 12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for 12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang implementing mbrtowc for encodings like UTF-8. */ 12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@ 13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_mbstate_t 13105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int rpl_mbstate_t; 13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbstate_t 13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mbstate_t rpl_mbstate_t 13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GNULIB_defined_mbstate_t 1 13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a single-byte character to a wide character. */ 14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_BTOWC@ 14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_BTOWC@ 14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef btowc 14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define btowc rpl_btowc 14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); 14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (btowc, wint_t, (int c)); 14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_BTOWC@ 15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); 15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (btowc, wint_t, (int c)); 15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (btowc); 15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef btowc 15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_BTOWC 15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (btowc, "btowc is unportable - " 15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module btowc for portability"); 16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a wide character to a single-byte character. */ 16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCTOB@ 16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WCTOB@ 16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wctob 16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wctob rpl_wctob 17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); 17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (wctob, int, (wint_t wc)); 17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !defined wctob && !@HAVE_DECL_WCTOB@ 17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* wctob is provided by gnulib, or wctob exists but is not declared. */ 17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); 17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wctob, int, (wint_t wc)); 17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wctob); 18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wctob 18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCTOB 18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wctob, "wctob is unportable - " 18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wctob for portability"); 18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Test whether *PS is in the initial state. */ 19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MBSINIT@ 19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MBSINIT@ 19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbsinit 19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mbsinit rpl_mbsinit 19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps)); 19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps)); 19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MBSINIT@ 20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps)); 20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps)); 20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mbsinit); 20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbsinit 20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MBSINIT 20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - " 21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mbsinit for portability"); 21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a multibyte character to a wide character. */ 21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MBRTOWC@ 21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MBRTOWC@ 21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbrtowc 22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mbrtowc rpl_mbrtowc 22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mbrtowc, size_t, 22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); 22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mbrtowc, size_t, 22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); 22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MBRTOWC@ 22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mbrtowc, size_t, 22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); 23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mbrtowc, size_t, 23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); 23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mbrtowc); 23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbrtowc 23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MBRTOWC 23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - " 23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mbrtowc for portability"); 24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Recognize a multibyte character. */ 24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MBRLEN@ 24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MBRLEN@ 24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbrlen 24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mbrlen rpl_mbrlen 25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); 25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); 25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MBRLEN@ 25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); 25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); 25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mbrlen); 26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbrlen 26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MBRLEN 26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - " 26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mbrlen for portability"); 26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a string to a wide string. */ 27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MBSRTOWCS@ 27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MBSRTOWCS@ 27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbsrtowcs 27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mbsrtowcs rpl_mbsrtowcs 27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mbsrtowcs, size_t, 27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) 27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mbsrtowcs, size_t, 28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t len, 28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MBSRTOWCS@ 28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mbsrtowcs, size_t, 28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) 28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mbsrtowcs, size_t, 28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t len, 29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mbsrtowcs); 29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbsrtowcs 29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MBSRTOWCS 29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - " 29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mbsrtowcs for portability"); 29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a string to a wide string. */ 30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_MBSNRTOWCS@ 30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_MBSNRTOWCS@ 30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbsnrtowcs 30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define mbsnrtowcs rpl_mbsnrtowcs 30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (mbsnrtowcs, size_t, 31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t srclen, size_t len, 31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps) 31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (mbsnrtowcs, size_t, 31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t srclen, size_t len, 31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_MBSNRTOWCS@ 31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (mbsnrtowcs, size_t, 31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t srclen, size_t len, 32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps) 32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (mbsnrtowcs, size_t, 32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const char **srcp, size_t srclen, size_t len, 32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (mbsnrtowcs); 32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef mbsnrtowcs 33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_MBSNRTOWCS 33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - " 33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module mbsnrtowcs for portability"); 33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a wide character to a multibyte character. */ 33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCRTOMB@ 33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WCRTOMB@ 34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcrtomb 34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wcrtomb rpl_wcrtomb 34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); 34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); 34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCRTOMB@ 34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); 34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); 35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcrtomb); 35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcrtomb 35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCRTOMB 35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - " 35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcrtomb for portability"); 35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a wide string to a string. */ 36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSRTOMBS@ 36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WCSRTOMBS@ 36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsrtombs 36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wcsrtombs rpl_wcsrtombs 36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (wcsrtombs, size_t, 37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) 37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (wcsrtombs, size_t, 37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t len, 37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSRTOMBS@ 37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsrtombs, size_t, 37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) 37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsrtombs, size_t, 38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t len, 38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsrtombs); 38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsrtombs 38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSRTOMBS 38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - " 39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsrtombs for portability"); 39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert a wide string to a string. */ 39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSNRTOMBS@ 39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WCSNRTOMBS@ 39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsnrtombs 40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wcsnrtombs rpl_wcsnrtombs 40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (wcsnrtombs, size_t, 40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t srclen, size_t len, 40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps) 40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (wcsnrtombs, size_t, 40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t srclen, size_t len, 40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSNRTOMBS@ 41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsnrtombs, size_t, 41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t srclen, size_t len, 41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps) 41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ARG_NONNULL ((2))); 41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsnrtombs, size_t, 41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (char *dest, const wchar_t **srcp, size_t srclen, size_t len, 41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang mbstate_t *ps)); 41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsnrtombs); 42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsnrtombs 42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSNRTOMBS 42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " 42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsnrtombs for portability"); 42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the number of screen columns needed for WC. */ 43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCWIDTH@ 43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WCWIDTH@ 43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcwidth 43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wcwidth rpl_wcwidth 43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); 43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); 43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_DECL_WCWIDTH@ 44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* wcwidth exists but is not declared. */ 44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); 44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t)); 44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcwidth); 44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcwidth 44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCWIDTH 45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - " 45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcwidth for portability"); 45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Search N wide characters of S for C. */ 45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WMEMCHR@ 45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WMEMCHR@ 45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n) 46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* On some systems, this function is defined as an overloaded function: 46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang extern "C++" { 46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t); 46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t); 46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } */ 46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST2 (wmemchr, 46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t *, (const wchar_t *, wchar_t, size_t), 46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t *, (const wchar_t *, wchar_t, size_t)); 47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ 47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) 47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); 47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wmemchr, const wchar_t *, 47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s, wchar_t c, size_t n)); 47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wmemchr); 47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wmemchr 48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WMEMCHR 48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - " 48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wmemchr for portability"); 48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Compare N wide characters of S1 and S2. */ 48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WMEMCMP@ 48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WMEMCMP@ 49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wmemcmp, int, 49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s1, const wchar_t *s2, size_t n) 49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wmemcmp, int, 49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s1, const wchar_t *s2, size_t n)); 49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wmemcmp); 49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wmemcmp 49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WMEMCMP 50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - " 50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wmemcmp for portability"); 50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy N wide characters of SRC to DEST. */ 50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WMEMCPY@ 50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WMEMCPY@ 50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wmemcpy, wchar_t *, 51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wmemcpy, wchar_t *, 51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wmemcpy); 51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wmemcpy 51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WMEMCPY 51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - " 51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wmemcpy for portability"); 52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for 52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang overlapping memory areas. */ 52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WMEMMOVE@ 52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WMEMMOVE@ 52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wmemmove, wchar_t *, 52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wmemmove, wchar_t *, 53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wmemmove); 53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wmemmove 53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WMEMMOVE 53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - " 53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wmemmove for portability"); 53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Set N wide characters of S to C. */ 54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WMEMSET@ 54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WMEMSET@ 54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); 54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); 54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wmemset); 55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wmemset 55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WMEMSET 55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wmemset, "wmemset is unportable - " 55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wmemset for portability"); 55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the number of wide characters in S. */ 56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSLEN@ 56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSLEN@ 56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE); 56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s)); 56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcslen); 56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcslen 56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSLEN 56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcslen, "wcslen is unportable - " 57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcslen for portability"); 57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the number of wide characters in S, but at most MAXLEN. */ 57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSNLEN@ 57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSNLEN@ 57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen) 57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)); 58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsnlen); 58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsnlen 58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSNLEN 58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - " 58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsnlen for portability"); 58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy SRC to DEST. */ 59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCPY@ 59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCPY@ 59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); 59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); 59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcscpy); 59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcscpy 60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCPY 60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - " 60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcscpy for portability"); 60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ 60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCPCPY@ 61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCPCPY@ 61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); 61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); 61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcpcpy); 61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcpcpy 61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCPCPY 61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - " 61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcpcpy for portability"); 62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy no more than N wide characters of SRC to DEST. */ 62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSNCPY@ 62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSNCPY@ 62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsncpy, wchar_t *, 62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsncpy, wchar_t *, 63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsncpy); 63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsncpy 63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSNCPY 63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - " 63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsncpy for portability"); 63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy no more than N characters of SRC to DEST, returning the address of 64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang the last character written into DEST. */ 64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCPNCPY@ 64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCPNCPY@ 64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcpncpy, wchar_t *, 64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcpncpy, wchar_t *, 65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcpncpy); 65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcpncpy 65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCPNCPY 65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - " 65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcpncpy for portability"); 65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Append SRC onto DEST. */ 66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCAT@ 66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCAT@ 66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); 66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); 66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcscat); 66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcscat 67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCAT 67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcscat, "wcscat is unportable - " 67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcscat for portability"); 67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Append no more than N wide characters of SRC onto DEST. */ 67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSNCAT@ 67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSNCAT@ 68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsncat, wchar_t *, 68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsncat, wchar_t *, 68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *dest, const wchar_t *src, size_t n)); 68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsncat); 68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsncat 68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSNCAT 68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - " 69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsncat for portability"); 69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Compare S1 and S2. */ 69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCMP@ 69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCMP@ 69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2) 69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)); 70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcscmp); 70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcscmp 70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCMP 70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - " 70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcscmp for portability"); 70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Compare no more than N wide characters of S1 and S2. */ 71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSNCMP@ 71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSNCMP@ 71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsncmp, int, 71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s1, const wchar_t *s2, size_t n) 71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsncmp, int, 72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s1, const wchar_t *s2, size_t n)); 72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsncmp); 72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsncmp 72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSNCMP 72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - " 72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsncmp for portability"); 72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Compare S1 and S2, ignoring case. */ 73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCASECMP@ 73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCASECMP@ 73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2) 73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)); 73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcscasecmp); 73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcscasecmp 74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCASECMP 74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - " 74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcscasecmp for portability"); 74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Compare no more than N chars of S1 and S2, ignoring case. */ 74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSNCASECMP@ 75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSNCASECMP@ 75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsncasecmp, int, 75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s1, const wchar_t *s2, size_t n) 75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsncasecmp, int, 75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *s1, const wchar_t *s2, size_t n)); 75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsncasecmp); 75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsncasecmp 76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSNCASECMP 76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - " 76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsncasecmp for portability"); 76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE 76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang category of the current locale. */ 76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCOLL@ 77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCOLL@ 77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); 77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); 77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcscoll); 77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcscoll 77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCOLL 77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - " 77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcscoll for portability"); 78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Transform S2 into array pointed to by S1 such that if wcscmp is applied 78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang to two transformed strings the result is the as applying 'wcscoll' to the 78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang original strings. */ 78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSXFRM@ 78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSXFRM@ 78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); 79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); 79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsxfrm); 79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsxfrm 79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSXFRM 79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - " 79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsxfrm for portability"); 79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Duplicate S, returning an identical malloc'd string. */ 80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSDUP@ 80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSDUP@ 80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s)); 80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); 80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsdup); 80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsdup 81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSDUP 81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - " 81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsdup for portability"); 81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Find the first occurrence of WC in WCS. */ 81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCHR@ 82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCHR@ 82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc) 82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* On some systems, this function is defined as an overloaded function: 82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang extern "C++" { 82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t * std::wcschr (const wchar_t *, wchar_t); 82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t * std::wcschr (wchar_t *, wchar_t); 82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } */ 82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST2 (wcschr, 83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t *, (const wchar_t *, wchar_t), 83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t *, (const wchar_t *, wchar_t)); 83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ 83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) 83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc)); 83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); 83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcschr); 83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcschr 84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCHR 84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcschr, "wcschr is unportable - " 84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcschr for portability"); 84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Find the last occurrence of WC in WCS. */ 84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSRCHR@ 85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSRCHR@ 85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc) 85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* On some systems, this function is defined as an overloaded function: 85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang extern "C++" { 85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t * std::wcsrchr (const wchar_t *, wchar_t); 85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t * std::wcsrchr (wchar_t *, wchar_t); 85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } */ 85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST2 (wcsrchr, 86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t *, (const wchar_t *, wchar_t), 86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t *, (const wchar_t *, wchar_t)); 86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ 86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) 86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc)); 86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); 86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsrchr); 86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsrchr 87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSRCHR 87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - " 87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsrchr for portability"); 87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the length of the initial segmet of WCS which consists entirely 87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang of wide characters not in REJECT. */ 88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSCSPN@ 88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSCSPN@ 88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject) 88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)); 88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcscspn); 88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcscspn 88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSCSPN 89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - " 89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcscspn for portability"); 89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the length of the initial segmet of WCS which consists entirely 89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang of wide characters in ACCEPT. */ 89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSSPN@ 89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSSPN@ 90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept) 90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)); 90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsspn); 90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsspn 90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSSPN 90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - " 90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsspn for portability"); 91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Find the first occurrence in WCS of any character in ACCEPT. */ 91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSPBRK@ 91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSPBRK@ 91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcspbrk, wchar_t *, 91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *wcs, const wchar_t *accept) 91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* On some systems, this function is defined as an overloaded function: 92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang extern "C++" { 92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *); 92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t * std::wcspbrk (wchar_t *, const wchar_t *); 92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } */ 92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST2 (wcspbrk, 92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t *, (const wchar_t *, const wchar_t *), 92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t *, (const wchar_t *, const wchar_t *)); 92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ 93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) 93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcspbrk, wchar_t *, 93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *wcs, const wchar_t *accept)); 93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *, 93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *wcs, const wchar_t *accept)); 93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcspbrk); 93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcspbrk 94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSPBRK 94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - " 94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcspbrk for portability"); 94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Find the first occurrence of NEEDLE in HAYSTACK. */ 94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSSTR@ 94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSSTR@ 95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcsstr, wchar_t *, 95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *haystack, const wchar_t *needle) 95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* On some systems, this function is defined as an overloaded function: 95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang extern "C++" { 95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *); 95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t * std::wcsstr (wchar_t *, const wchar_t *); 95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } */ 95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS_CAST2 (wcsstr, 96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang wchar_t *, (const wchar_t *, const wchar_t *), 96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang const wchar_t *, (const wchar_t *, const wchar_t *)); 96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ 96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) 96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcsstr, wchar_t *, 96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *haystack, const wchar_t *needle)); 96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN1 (wcsstr, const wchar_t *, 96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (const wchar_t *haystack, const wchar_t *needle)); 96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcsstr); 97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcsstr 97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSSTR 97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - " 97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcsstr for portability"); 97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Divide WCS into tokens separated by characters in DELIM. */ 98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSTOK@ 98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSTOK@ 98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcstok, wchar_t *, 98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); 98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcstok, wchar_t *, 98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); 98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcstok); 98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcstok 99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSTOK 99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcstok, "wcstok is unportable - " 99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcstok for portability"); 99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Determine number of column positions required for first N wide 99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang characters (or fewer if S ends before this) in S. */ 100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_WCSWIDTH@ 100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_WCSWIDTH@ 100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcswidth 100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wcswidth rpl_wcswidth 100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n) 100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n)); 100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_WCSWIDTH@ 101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n) 101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang _GL_ATTRIBUTE_PURE); 101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n)); 101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wcswidth); 101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK 101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wcswidth 101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCSWIDTH 102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - " 102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang "use gnulib module wcswidth for portability"); 102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_WCHAR_H */ 102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_WCHAR_H */ 102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 1029