wctype-h: Add support for Minix.
authorBruno Haible <bruno@clisp.org>
Sun, 31 Jul 2011 20:39:32 +0000 (22:39 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 31 Jul 2011 20:39:32 +0000 (22:39 +0200)
* m4/wctype_h.m4 (gl_WCTYPE_H): Test whether towlower is declared. Set
REPLACE_TOWLOWER.
* modules/wctype-h (Makefile.am): Substitute REPLACE_TOWLOWER.
* lib/wctype.in.h (towlower, towupper): Test REPLACE_TOWLOWER, not
REPLACE_ISWCNTRL.

ChangeLog
lib/wctype.in.h
m4/wctype_h.m4
modules/wctype-h

index a563a1a11db6c51428efb150a41592e2027d9443..b95959c0354f8986b3032e1e4c9f2f0f48f2683c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-07-31  Bruno Haible  <bruno@clisp.org>
+
+       wctype-h: Add support for Minix.
+       * m4/wctype_h.m4 (gl_WCTYPE_H): Test whether towlower is declared. Set
+       REPLACE_TOWLOWER.
+       * modules/wctype-h (Makefile.am): Substitute REPLACE_TOWLOWER.
+       * lib/wctype.in.h (towlower, towupper): Test REPLACE_TOWLOWER, not
+       REPLACE_ISWCNTRL.
+
 2011-07-31  Paul Eggert  <eggert@cs.ucla.edu>
 
        * lib/xalloc.h (DEFAULT_MXFAST): Track 64-bit glibc.
index 5e6798a449c74cab8687b167714645b758748f97..cb50c5b0ef957ea20f7c6a731a62133ccf2246b5 100644 (file)
 #    define iswspace rpl_iswspace
 #    define iswupper rpl_iswupper
 #    define iswxdigit rpl_iswxdigit
+#   endif
+#  endif
+#  if @REPLACE_TOWLOWER@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #    define towlower rpl_towlower
 #    define towupper rpl_towupper
 #   endif
@@ -271,7 +275,7 @@ iswxdigit
 }
 
 static inline wint_t
-#  if @REPLACE_ISWCNTRL@
+#  if @REPLACE_TOWLOWER@
 rpl_towlower
 #  else
 towlower
@@ -282,7 +286,7 @@ towlower
 }
 
 static inline wint_t
-#  if @REPLACE_ISWCNTRL@
+#  if @REPLACE_TOWLOWER@
 rpl_towupper
 #  else
 towupper
@@ -429,7 +433,7 @@ _GL_WARN_ON_USE (iswctype, "iswctype is unportable - "
 # endif
 #endif
 
-#if @REPLACE_ISWCNTRL@ || defined __MINGW32__
+#if @REPLACE_TOWLOWER@ || defined __MINGW32__
 _GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
 _GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
 #else
index ef9fb049ce69013c8e4dbf5f3f303bead075d0fa..6df403b3a6e8d912bb12c7eafda5100076a43a64 100644 (file)
@@ -1,4 +1,4 @@
-# wctype_h.m4 serial 14
+# wctype_h.m4 serial 15
 
 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
 
@@ -75,7 +75,39 @@ AC_DEFUN([gl_WCTYPE_H],
   AC_SUBST([REPLACE_ISWCNTRL])
 
   if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
-    dnl Redefine all of iswcntrl, ..., towupper in <wctype.h>.
+    dnl Redefine all of iswcntrl, ..., iswxdigit in <wctype.h>.
+    :
+  fi
+
+  if test $REPLACE_ISWCNTRL = 1; then
+    REPLACE_TOWLOWER=1
+  else
+    AC_CHECK_DECLS([towlower],,,
+      [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+           included before <wchar.h>.
+           BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+           must be included before <wchar.h>.  */
+        #include <stddef.h>
+        #include <stdio.h>
+        #include <time.h>
+        #include <wchar.h>
+        #if HAVE_WCTYPE_H
+        # include <wctype.h>
+        #endif
+      ]])
+    if test $ac_cv_have_decl_towlower = yes; then
+      dnl On Minix 3.1.8, the system's <wctype.h> declares towlower() and
+      dnl towupper() although it does not have the functions. Avoid a collision
+      dnl with gnulib's replacement.
+      REPLACE_TOWLOWER=1
+    else
+      REPLACE_TOWLOWER=0
+    fi
+  fi
+  AC_SUBST([REPLACE_TOWLOWER])
+
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then
+    dnl Redefine towlower, towupper in <wctype.h>.
     :
   fi
 
index 58491192c0ea74c925fef6a9caab08b34225e687..f7b7b5911fb3acbcc705835fc6e240799a853632 100644 (file)
@@ -40,6 +40,7 @@ wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H
              -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
              -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
              -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+             -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
              < $(srcdir)/wctype.in.h; \