bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: coreutils 6.6 fails to compile on IRIX 5.3


From: Paul Eggert
Subject: Re: coreutils 6.6 fails to compile on IRIX 5.3
Date: Sat, 23 Dec 2006 23:55:50 -0800
User-agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux)

Bruno Haible <address@hidden> writes:

> ! #if HAVE_WCHAR_H
> ! # include <wctype.h>
> ! #else
> ! # ifndef iswprint
> ! #  define iswprint(wc) 1
> ! # endif
> ! #endif

That should work, but I'd prefer something less intrusive on uses of
the module, so that the source code says only "#include <wctype.h>".

I'm willing to complicate the module implementation a bit to get
there.  The idea is to enable simplifications like the patch proposed in
<http://lists.gnu.org/archive/html/bug-gnulib/2006-12/msg00202.html>.

How about the following patch instead?  I installed it.

2006-12-23  Paul Eggert  <address@hidden>

        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.

Index: lib/wctype_.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/wctype_.h,v
retrieving revision 1.2
diff -u -p -r1.2 wctype_.h
--- lib/wctype_.h       22 Dec 2006 16:27:26 -0000      1.2
+++ lib/wctype_.h       24 Dec 2006 07:55:05 -0000
@@ -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 @@ static wint_t _ctmp_;

 #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 @@ iswalnum (wint_t wc)

 #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 @@ iswalpha (wint_t wc)

 #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 @@ iswblank (wint_t wc)

 #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 @@ iswcntrl (wint_t wc)

 #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 @@ iswdigit (wint_t wc)

 #if !defined iswgraph && !HAVE_ISWCNTRL
 static inline int
-iswgraph (wint_t wc)
+iswgraph (__wctype_wint_t wc)
 {
   return wc >= '!' && wc <= '~';
 }
@@ -110,7 +115,7 @@ iswgraph (wint_t wc)

 #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 @@ iswlower (wint_t wc)

 #if !defined iswprint && !HAVE_ISWCNTRL
 static inline int
-iswprint (wint_t wc)
+iswprint (__wctype_wint_t wc)
 {
   return wc >= ' ' && wc <= '~';
 }
@@ -128,7 +133,7 @@ iswprint (wint_t wc)

 #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 @@ iswpunct (wint_t wc)

 #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 @@ iswspace (wint_t wc)

 #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 @@ iswupper (wint_t wc)

 #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'));
Index: m4/wctype.m4
===================================================================
RCS file: /cvsroot/gnulib/gnulib/m4/wctype.m4,v
retrieving revision 1.2
diff -u -p -r1.2 wctype.m4
--- m4/wctype.m4        22 Dec 2006 16:27:26 -0000      1.2
+++ m4/wctype.m4        24 Dec 2006 07:55:05 -0000
@@ -13,6 +13,9 @@ AC_DEFUN([gl_WCTYPE_H],
   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\"
Index: modules/wctype
===================================================================
RCS file: /cvsroot/gnulib/gnulib/modules/wctype,v
retrieving revision 1.1
diff -u -p -r1.1 wctype
--- modules/wctype      22 Dec 2006 00:21:54 -0000      1.1
+++ modules/wctype      24 Dec 2006 07:55:05 -0000
@@ -4,6 +4,7 @@ A <wctype.h> that conforms better to C99
 Files:
 lib/wctype_.h
 m4/wctype.m4
+m4/wint_t.m4

 Depends-on:

@@ -21,6 +22,7 @@ wctype.h: wctype_.h
          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; \
        } > address@hidden
        mv address@hidden $@




reply via email to

[Prev in Thread] Current Thread [Next in Thread]