changeset 13958:eaaa26453720

wctype: Make it work in C++ mode on OSF/1 5.1. * lib/wctype.in.h (iswblank): Declare but not define here. * lib/iswblank.c: New file, extracted from lib/wctype.in.h. * m4/wctype_h.m4 (gl_WCTYPE_H): Arrange to compile it if needed. * modules/wctype (Files): Add lib/iswblank.c.
author Bruno Haible <bruno@clisp.org>
date Mon, 20 Dec 2010 02:18:07 +0100
parents 4efda5bffbf3
children 363040041ced
files ChangeLog lib/iswblank.c lib/wctype.in.h m4/wctype_h.m4 modules/wctype
diffstat 5 files changed, 49 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-12-19  Bruno Haible  <bruno@clisp.org>
+
+	wctype: Make it work in C++ mode on OSF/1 5.1.
+	* lib/wctype.in.h (iswblank): Declare but not define here.
+	* lib/iswblank.c: New file, extracted from lib/wctype.in.h.
+	* m4/wctype_h.m4 (gl_WCTYPE_H): Arrange to compile it if needed.
+	* modules/wctype (Files): Add lib/iswblank.c.
+
 2010-12-19  Bruno Haible  <bruno@clisp.org>
 
 	signal: Document problem with type of SIGRTMIN, SIGRTMAX on OSF/1 5.1.
new file mode 100644
--- /dev/null
+++ b/lib/iswblank.c
@@ -0,0 +1,27 @@
+/* Test wide character for being blank.
+   Copyright (C) 2008-2010 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
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <wctype.h>
+
+int
+iswblank (wint_t wc)
+{
+  return wc == ' ' || wc == '\t';
+}
--- a/lib/wctype.in.h
+++ b/lib/wctype.in.h
@@ -284,18 +284,10 @@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define iswblank rpl_iswblank
 #  endif
-# endif
-
-static inline int
-# if @REPLACE_ISWBLANK@
-rpl_iswblank
+extern int rpl_iswblank (wint_t wc);
 # else
-iswblank
+extern int iswblank (wint_t wc);
 # endif
-         (wint_t wc)
-{
-  return wc == ' ' || wc == '\t';
-}
 
 #endif
 
--- a/m4/wctype_h.m4
+++ b/m4/wctype_h.m4
@@ -1,4 +1,4 @@
-# wctype_h.m4 serial 8
+# wctype_h.m4 serial 9
 
 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
 
@@ -82,4 +82,14 @@
     REPLACE_ISWCNTRL=0
   fi
   AC_SUBST([REPLACE_ISWCNTRL])
+
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+    dnl Redefine all of iswcntrl, ..., towupper in <wctype.h>.
+    :
+  else
+    if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then
+      dnl Redefine only iswblank.
+      AC_LIBOBJ([iswblank])
+    fi
+  fi
 ])
--- a/modules/wctype
+++ b/modules/wctype
@@ -3,6 +3,7 @@
 
 Files:
 lib/wctype.in.h
+lib/iswblank.c
 m4/wctype_h.m4
 m4/wint_t.m4