+2008-09-20 Bruno Haible <bruno@clisp.org>
+
+ Ensure that wint_t gets defined on IRIX 5.3.
+ * lib/wchar.in.h (wint_t): Define if not defined by the system.
+ * lib/wctype.in.h (wint_t): Likewise.
+ (__wctype_wint_t): Remove type.
+ (isw*): Use wint_t instead of __wctype_wint_t.
+ * m4/wchar.m4 (gl_WCHAR_H): Invoke gt_TYPE_WINT_T and set HAVE_WINT_T.
+ * modules/wchar (Files): Add m4/wint_t.m4.
+ (Makefile.am): Substitute HAVE_WINT_T.
+ * tests/test-wchar.c: Check that wchar_t and wint_t are defined.
+ * tests/test-wctype.c: Check that wint_t is defined.
+ * doc/posix-headers/wchar.texi: Mention the IRIX 5 problem.
+ * doc/posix-headers/wctype.texi: Likewise.
+ Reported by Tom G. Christensen <tgc@jupiterrise.com>.
+
2008-09-18 Bruno Haible <bruno@clisp.org>
* gnulib-tool (func_exit): Update comment.
@item
This header file is not self-contained on some platforms:
OSF/1 with Desktop Toolkit C, BSD/OS 4.0.1.
+@item
+The type @code{wint_t} is missing on some platforms:
+IRIX 5.3.
@end itemize
Portability problems not fixed by Gnulib:
This header file is not self-contained on some platforms:
Solaris 2.5, OSF/1 with Desktop Toolkit C, BSD/OS 4.0.1.
@item
+The type @code{wint_t} is missing on some platforms:
+IRIX 5.3.
+@item
The functions @code{isw*} are missing on some platforms:
FreeBSD 4.11.
@item
#endif
+/* Define wint_t. (Also done in wctype.in.h.) */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+#endif
+
+
/* Return the number of screen columns needed for WC. */
#if @GNULIB_WCWIDTH@
# if @REPLACE_WCWIDTH@
#ifndef _GL_WCTYPE_H
#define _GL_WCTYPE_H
-#if @HAVE_WINT_T@
-typedef wint_t __wctype_wint_t;
-#else
-typedef int __wctype_wint_t;
+/* Define wint_t. (Also done in wchar.in.h.) */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
#endif
/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
# endif
static inline int
-iswalnum (__wctype_wint_t wc)
+iswalnum (wint_t wc)
{
return ((wc >= '0' && wc <= '9')
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
}
static inline int
-iswalpha (__wctype_wint_t wc)
+iswalpha (wint_t wc)
{
return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
}
static inline int
-iswblank (__wctype_wint_t wc)
+iswblank (wint_t wc)
{
return wc == ' ' || wc == '\t';
}
static inline int
-iswcntrl (__wctype_wint_t wc)
+iswcntrl (wint_t wc)
{
return (wc & ~0x1f) == 0 || wc == 0x7f;
}
static inline int
-iswdigit (__wctype_wint_t wc)
+iswdigit (wint_t wc)
{
return wc >= '0' && wc <= '9';
}
static inline int
-iswgraph (__wctype_wint_t wc)
+iswgraph (wint_t wc)
{
return wc >= '!' && wc <= '~';
}
static inline int
-iswlower (__wctype_wint_t wc)
+iswlower (wint_t wc)
{
return wc >= 'a' && wc <= 'z';
}
static inline int
-iswprint (__wctype_wint_t wc)
+iswprint (wint_t wc)
{
return wc >= ' ' && wc <= '~';
}
static inline int
-iswpunct (__wctype_wint_t wc)
+iswpunct (wint_t wc)
{
return (wc >= '!' && wc <= '~'
&& !((wc >= '0' && wc <= '9')
}
static inline int
-iswspace (__wctype_wint_t wc)
+iswspace (wint_t wc)
{
return (wc == ' ' || wc == '\t'
|| wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
}
static inline int
-iswupper (__wctype_wint_t wc)
+iswupper (wint_t wc)
{
return wc >= 'A' && wc <= 'Z';
}
static inline int
-iswxdigit (__wctype_wint_t wc)
+iswxdigit (wint_t wc)
{
return ((wc >= '0' && wc <= '9')
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
-dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Written by Eric Blake.
-# wchar.m4 serial 4
+# wchar.m4 serial 5
AC_DEFUN([gl_WCHAR_H],
[
wchar_t w;]],
[gl_cv_header_wchar_h_standalone=yes],
[gl_cv_header_wchar_h_standalone=no])])
- if test $gl_cv_header_wchar_h_standalone != yes; then
+
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+ AC_SUBST([HAVE_WINT_T])
+
+ if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then
WCHAR_H=wchar.h
fi
Files:
lib/wchar.in.h
m4/wchar.m4
+m4/wint_t.m4
Depends-on:
include_next
-e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
-e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
-e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
-e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
/* Test of <wchar.h> substitute.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <wchar.h>
+/* Check that the types wchar_t and wint_t are defined. */
+wchar_t a = 'c';
+wint_t b = 'x';
+
int
main ()
{
#include <wctype.h>
+/* Check that the type wint_t is defined. */
+wint_t a = 'x';
+
int
main ()
{