1/* A substitute for ISO C99 <wchar.h>, for platforms that have issues. 2 3 Copyright (C) 2007 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2, or (at your option) 8 any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software Foundation, 17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 18 19/* Written by Eric Blake. */ 20 21/* 22 * ISO C 99 <wchar.h> for platforms that have issues. 23 * <http://www.opengroup.org/susv3xbd/wchar.h.html> 24 * 25 * For now, this just ensures proper prerequisite inclusion order and 26 * the declaration of wcwidth(). 27 */ 28 29#ifdef __need_mbstate_t 30/* Special invocation convention inside glibc header files. */ 31 32#@INCLUDE_NEXT@ @NEXT_WCHAR_H@ 33 34#else 35/* Normal invocation convention. */ 36 37#ifndef _GL_WCHAR_H 38 39/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before 40 <wchar.h>. 41 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be 42 included before <wchar.h>. */ 43#include <stddef.h> 44#include <stdio.h> 45#include <time.h> 46 47/* Include the original <wchar.h> if it exists. 48 Some builds of uClibc lack it. */ 49/* The include_next requires a split double-inclusion guard. */ 50#if @HAVE_WCHAR_H@ 51# @INCLUDE_NEXT@ @NEXT_WCHAR_H@ 52#endif 53 54#ifndef _GL_WCHAR_H 55#define _GL_WCHAR_H 56 57/* The definition of GL_LINK_WARNING is copied here. */ 58 59#ifdef __cplusplus 60extern "C" { 61#endif 62 63 64/* Return the number of screen columns needed for WC. */ 65#if @GNULIB_WCWIDTH@ 66# if @REPLACE_WCWIDTH@ 67# undef wcwidth 68# define wcwidth rpl_wcwidth 69extern int wcwidth (wchar_t); 70# else 71# if !defined wcwidth && !@HAVE_DECL_WCWIDTH@ 72/* wcwidth exists but is not declared. */ 73extern int wcwidth (int /* actually wchar_t */); 74# endif 75# endif 76#elif defined GNULIB_POSIXCHECK 77# undef wcwidth 78# define wcwidth(w) \ 79 (GL_LINK_WARNING ("wcwidth is unportable - " \ 80 "use gnulib module wcwidth for portability"), \ 81 wcwidth (w)) 82#endif 83 84 85#ifdef __cplusplus 86} 87#endif 88 89#endif /* _GL_WCHAR_H */ 90#endif /* _GL_WCHAR_H */ 91#endif 92