Mercurial > hg > octave-nkf > gnulib-hg
changeset 7747:c847540b5de5
Fix bug reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2006-12/msg00228.html>
where quotearg.c didn't compile on Mac OS X 10.2 because it
lacks <wchar.h> and wint_t.
* lib/wctype_.h (__wctype_wint_t): New type.
Include <stdio.h>, <time.h>, <wchar.h> only if HAVE_WINT_T.
(iswalnum, iswalpha, iswblank, iswcntrl, iswdigit, iswgraph):
(iswlower, iswprint, iswpunct, iswspace, iswupper, ixwxdigit):
Arg is now of type __wctype_wint_t, not wint_t.
* m4/wctype.m4 (gl_WCTYPE_H): Require gt_TYPE_WINT_T, and
substitute HAVE_WINT_T.
* modules/wctype (Files): Add m4/wint_t.m4.
(wctype.h): Substitute HAVE_WINT_T.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sun, 24 Dec 2006 07:55:08 +0000 |
parents | 577c75e46325 |
children | 13a0cdc745f8 |
files | ChangeLog lib/wctype_.h m4/wctype.m4 modules/wctype |
diffstat | 4 files changed, 41 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2006-12-23 Paul Eggert <eggert@cs.ucla.edu> + + Fix bug reported by Bruno Haible in + <http://lists.gnu.org/archive/html/bug-gnulib/2006-12/msg00228.html> + where quotearg.c didn't compile on Mac OS X 10.2 because it + lacks <wchar.h> and wint_t. + * lib/wctype_.h (__wctype_wint_t): New type. + Include <stdio.h>, <time.h>, <wchar.h> only if HAVE_WINT_T. + (iswalnum, iswalpha, iswblank, iswcntrl, iswdigit, iswgraph): + (iswlower, iswprint, iswpunct, iswspace, iswupper, ixwxdigit): + Arg is now of type __wctype_wint_t, not wint_t. + * m4/wctype.m4 (gl_WCTYPE_H): Require gt_TYPE_WINT_T, and + substitute HAVE_WINT_T. + * modules/wctype (Files): Add m4/wint_t.m4. + (wctype.h): Substitute HAVE_WINT_T. + 2006-12-23 Bruno Haible <bruno@clisp.org> * lib/safe-read.h [C++]: Wrap declarations in extern "C".
--- a/lib/wctype_.h +++ b/lib/wctype_.h @@ -29,14 +29,19 @@ #ifndef _GL_WCTYPE_H #define _GL_WCTYPE_H +#if @HAVE_WINT_T@ - 0 /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before <wchar.h>. BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before <wchar.h>. */ -#include <stdio.h> -#include <time.h> -#include <wchar.h> +# include <stdio.h> +# include <time.h> +# include <wchar.h> +typedef wint_t __wctype_wint_t; +#else +typedef int __wctype_wint_t; +#endif /* Include the original <wctype.h> if it exists. BeOS 5 has the functions but no <wctype.h>. */ @@ -55,7 +60,7 @@ #if !defined iswalnum && !HAVE_ISWCNTRL static inline int -iswalnum (wint_t wc) +iswalnum (__wctype_wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); @@ -65,7 +70,7 @@ #if !defined iswalpha && !HAVE_ISWCNTRL static inline int -iswalpha (wint_t wc) +iswalpha (__wctype_wint_t wc) { return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; } @@ -74,7 +79,7 @@ #if !defined iswblank && !HAVE_ISWCNTRL static inline int -iswblank (wint_t wc) +iswblank (__wctype_wint_t wc) { return wc == ' ' || wc == '\t'; } @@ -83,7 +88,7 @@ #if !defined iswcntrl && !HAVE_ISWCNTRL static inline int -iswcntrl (wint_t wc) +iswcntrl (__wctype_wint_t wc) { return (wc & ~0x1f) == 0 || wc == 0x7f; } @@ -92,7 +97,7 @@ #if !defined iswdigit && !HAVE_ISWCNTRL static inline int -iswdigit (wint_t wc) +iswdigit (__wctype_wint_t wc) { return wc >= '0' && wc <= '9'; } @@ -101,7 +106,7 @@ #if !defined iswgraph && !HAVE_ISWCNTRL static inline int -iswgraph (wint_t wc) +iswgraph (__wctype_wint_t wc) { return wc >= '!' && wc <= '~'; } @@ -110,7 +115,7 @@ #if !defined iswlower && !HAVE_ISWCNTRL static inline int -iswlower (wint_t wc) +iswlower (__wctype_wint_t wc) { return wc >= 'a' && wc <= 'z'; } @@ -119,7 +124,7 @@ #if !defined iswprint && !HAVE_ISWCNTRL static inline int -iswprint (wint_t wc) +iswprint (__wctype_wint_t wc) { return wc >= ' ' && wc <= '~'; } @@ -128,7 +133,7 @@ #if !defined iswpunct && !HAVE_ISWCNTRL static inline int -iswpunct (wint_t wc) +iswpunct (__wctype_wint_t wc) { return (wc >= '!' && wc <= '~' && !((wc >= '0' && wc <= '9') @@ -139,7 +144,7 @@ #if !defined iswspace && !HAVE_ISWCNTRL static inline int -iswspace (wint_t wc) +iswspace (__wctype_wint_t wc) { return (wc == ' ' || wc == '\t' || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); @@ -149,7 +154,7 @@ #if !defined iswupper && !HAVE_ISWCNTRL static inline int -iswupper (wint_t wc) +iswupper (__wctype_wint_t wc) { return wc >= 'A' && wc <= 'Z'; } @@ -158,7 +163,7 @@ #if !defined iswxdigit && !HAVE_ISWCNTRL static inline int -iswxdigit (wint_t wc) +iswxdigit (__wctype_wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
--- a/m4/wctype.m4 +++ b/m4/wctype.m4 @@ -13,6 +13,9 @@ AC_CHECK_HEADERS_ONCE([wctype.h]) AC_REQUIRE([AC_C_INLINE]) + AC_REQUIRE([gt_TYPE_WINT_T]) + AC_SUBST([HAVE_WINT_T]) + if test $ac_cv_header_wctype_h = yes; then gl_ABSOLUTE_HEADER([wctype.h]) ABSOLUTE_WCTYPE_H=\"$gl_cv_absolute_wctype_h\"
--- a/modules/wctype +++ b/modules/wctype @@ -4,6 +4,7 @@ Files: lib/wctype_.h m4/wctype.m4 +m4/wint_t.m4 Depends-on: @@ -21,6 +22,7 @@ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \ -e 's|@''ABSOLUTE_WCTYPE_H''@|$(ABSOLUTE_WCTYPE_H)|g' \ -e 's/@''HAVE_WCTYPE_CTMP_BUG''@/$(HAVE_WCTYPE_CTMP_BUG)/g' \ + -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \ < $(srcdir)/wctype_.h; \ } > $@-t mv $@-t $@