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 3, or (at your option) 8 any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, 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#ifndef _GL_WCHAR_H 30 31/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before 32 <wchar.h>. 33 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be 34 included before <wchar.h>. */ 35#include <stddef.h> 36#include <stdio.h> 37#include <time.h> 38 39/* Include the original <wchar.h> if it exists. 40 Some builds of uClibc lack it. */ 41/* The include_next requires a split double-inclusion guard. */ 42#if @HAVE_WCHAR_H@ 43# @INCLUDE_NEXT@ @NEXT_WCHAR_H@ 44#endif 45 46#ifndef _GL_WCHAR_H 47#define _GL_WCHAR_H 48 49/* The definition of GL_LINK_WARNING is copied here. */ 50 51#ifdef __cplusplus 52extern "C" { 53#endif 54 55 56/* Return the number of screen columns needed for WC. */ 57#if @GNULIB_WCWIDTH@ 58# if @REPLACE_WCWIDTH@ 59# undef wcwidth 60# define wcwidth rpl_wcwidth 61extern int wcwidth (wchar_t); 62# else 63# if !defined wcwidth && !@HAVE_DECL_WCWIDTH@ 64/* wcwidth exists but is not declared. */ 65extern int wcwidth (int /* actually wchar_t */); 66# endif 67# endif 68#elif defined GNULIB_POSIXCHECK 69# undef wcwidth 70# define wcwidth(w) \ 71 (GL_LINK_WARNING ("wcwidth is unportable - " \ 72 "use gnulib module wcwidth for portability"), \ 73 wcwidth (w)) 74#endif 75 76 77#ifdef __cplusplus 78} 79#endif 80 81#endif /* _GL_WCHAR_H */ 82#endif /* _GL_WCHAR_H */ 83