Tom G. Christensen wrote: > I was trying to build GNU tar 1.20 but got stuck on gnulib mbchar. > > I created a testdir from the latest gnulib mbchar and this is the > result: > make[3]: Entering directory `/usr/people/tgc/mbchar.test/mbchar/gllib' > source='localcharset.c' object='localcharset.o' libtool=no \ > DEPDIR=.deps depmode=sgi /bin/ksh ../build-aux/depcomp \ > cc -woff 728 -DHAVE_CONFIG_H -I. -I.. -g -c -o localcharset.o > localcharset.c > source='mbchar.c' object='mbchar.o' libtool=no \ > DEPDIR=.deps depmode=sgi /bin/ksh ../build-aux/depcomp \ > cc -woff 728 -DHAVE_CONFIG_H -I. -I.. -g -c -o mbchar.o mbchar.c > cfe: Error: ./mbchar.h, line 239: Syntax Error > mb_width_aux (wint_t wc) > ---------------------^
Thanks for reporting this. The problem is apparently that on this platform, neither <wchar.h> not <wctype.h> defines wint_t. I'm applying the attached tentative workaround. When you create a new testdir from latest gnulib mbchar, does it now pass? Bruno 2008-09-20 Bruno Haible <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>. *** doc/posix-headers/wchar.texi.orig 2008-09-20 14:43:37.000000000 +0200 --- doc/posix-headers/wchar.texi 2008-09-20 14:41:20.000000000 +0200 *************** *** 13,18 **** --- 13,21 ---- @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: *** doc/posix-headers/wctype.texi.orig 2008-09-20 14:43:37.000000000 +0200 --- doc/posix-headers/wctype.texi 2008-09-20 14:41:21.000000000 +0200 *************** *** 14,19 **** --- 14,22 ---- 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 *** lib/wchar.in.h.orig 2008-09-20 14:43:37.000000000 +0200 --- lib/wchar.in.h 2008-09-20 14:37:08.000000000 +0200 *************** *** 63,68 **** --- 63,74 ---- #endif + /* Define wint_t. (Also done in wctype.in.h.) */ + #if [EMAIL PROTECTED]@ && !defined wint_t + # define wint_t int + #endif + + /* Return the number of screen columns needed for WC. */ #if @GNULIB_WCWIDTH@ # if @REPLACE_WCWIDTH@ *** lib/wctype.in.h.orig 2008-09-20 14:43:37.000000000 +0200 --- lib/wctype.in.h 2008-09-20 14:36:43.000000000 +0200 *************** *** 52,61 **** #ifndef _GL_WCTYPE_H #define _GL_WCTYPE_H ! #if @HAVE_WINT_T@ ! typedef wint_t __wctype_wint_t; ! #else ! typedef int __wctype_wint_t; #endif /* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions. --- 52,60 ---- #ifndef _GL_WCTYPE_H #define _GL_WCTYPE_H ! /* Define wint_t. (Also done in wchar.in.h.) */ ! #if [EMAIL PROTECTED]@ && !defined wint_t ! # define wint_t int #endif /* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions. *************** *** 98,153 **** # endif static inline int ! iswalnum (__wctype_wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); } static inline int ! iswalpha (__wctype_wint_t wc) { return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; } static inline int ! iswblank (__wctype_wint_t wc) { return wc == ' ' || wc == '\t'; } static inline int ! iswcntrl (__wctype_wint_t wc) { return (wc & ~0x1f) == 0 || wc == 0x7f; } static inline int ! iswdigit (__wctype_wint_t wc) { return wc >= '0' && wc <= '9'; } static inline int ! iswgraph (__wctype_wint_t wc) { return wc >= '!' && wc <= '~'; } static inline int ! iswlower (__wctype_wint_t wc) { return wc >= 'a' && wc <= 'z'; } static inline int ! iswprint (__wctype_wint_t wc) { return wc >= ' ' && wc <= '~'; } static inline int ! iswpunct (__wctype_wint_t wc) { return (wc >= '!' && wc <= '~' && !((wc >= '0' && wc <= '9') --- 97,152 ---- # endif static inline int ! iswalnum (wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); } static inline int ! iswalpha (wint_t wc) { return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; } static inline int ! iswblank (wint_t wc) { return wc == ' ' || wc == '\t'; } static inline int ! iswcntrl (wint_t wc) { return (wc & ~0x1f) == 0 || wc == 0x7f; } static inline int ! iswdigit (wint_t wc) { return wc >= '0' && wc <= '9'; } static inline int ! iswgraph (wint_t wc) { return wc >= '!' && wc <= '~'; } static inline int ! iswlower (wint_t wc) { return wc >= 'a' && wc <= 'z'; } static inline int ! iswprint (wint_t wc) { return wc >= ' ' && wc <= '~'; } static inline int ! iswpunct (wint_t wc) { return (wc >= '!' && wc <= '~' && !((wc >= '0' && wc <= '9') *************** *** 155,174 **** } static inline int ! iswspace (__wctype_wint_t wc) { return (wc == ' ' || wc == '\t' || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); } static inline int ! iswupper (__wctype_wint_t wc) { return wc >= 'A' && wc <= 'Z'; } static inline int ! iswxdigit (__wctype_wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F')); --- 154,173 ---- } static inline int ! iswspace (wint_t wc) { return (wc == ' ' || wc == '\t' || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); } static inline int ! iswupper (wint_t wc) { return wc >= 'A' && wc <= 'Z'; } static inline int ! iswxdigit (wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F')); *** m4/wchar.m4.orig 2008-09-20 14:43:37.000000000 +0200 --- m4/wchar.m4 2008-09-20 14:34:59.000000000 +0200 *************** *** 1,13 **** dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues. ! dnl Copyright (C) 2007 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 AC_DEFUN([gl_WCHAR_H], [ --- 1,13 ---- dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues. ! 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 5 AC_DEFUN([gl_WCHAR_H], [ *************** *** 18,24 **** 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 WCHAR_H=wchar.h fi --- 18,33 ---- wchar_t w;]], [gl_cv_header_wchar_h_standalone=yes], [gl_cv_header_wchar_h_standalone=no])]) ! ! 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 *** modules/wchar.orig 2008-09-20 14:43:37.000000000 +0200 --- modules/wchar 2008-09-20 14:37:56.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/wchar.in.h m4/wchar.m4 + m4/wint_t.m4 Depends-on: include_next *************** *** 25,30 **** --- 26,32 ---- -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)' \ *** tests/test-wchar.c.orig 2008-09-20 14:43:37.000000000 +0200 --- tests/test-wchar.c 2008-09-20 14:30:29.000000000 +0200 *************** *** 1,5 **** /* Test of <wchar.h> substitute. ! Copyright (C) 2007 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 --- 1,5 ---- /* Test of <wchar.h> substitute. ! 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 *************** *** 20,25 **** --- 20,29 ---- #include <wchar.h> + /* Check that the types wchar_t and wint_t are defined. */ + wchar_t a = 'c'; + wint_t b = 'x'; + int main () { *** tests/test-wctype.c.orig 2008-09-20 14:43:37.000000000 +0200 --- tests/test-wctype.c 2008-09-20 14:30:24.000000000 +0200 *************** *** 20,25 **** --- 20,28 ---- #include <wctype.h> + /* Check that the type wint_t is defined. */ + wint_t a = 'x'; + int main () {