Still on OSF/1 5.1, I see this error: depbase=`echo test-wctype-c++.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; g++ -DHAVE_CONFIG_H -I. -DGNULIB_STRICT_CHECKING=1 -I. -I. -I.. -I./.. -I../gllib -I./../gllib -Wall -mieee -MT test-wctype-c++.o -MD -MP -MF $depbase.Tpo -c -o test-wctype-c++.o test-wctype-c++.cc && mv -f $depbase.Tpo $depbase.Po as0: Error: test-wctype-c++.cc, line 1: Conflicting definition of symbol iswblank *** Exit 1
The reason is the 'inline' function definition in wctype.in.h, which conflicts with the use of the same symbol as a function pointer. This fixes it. 2010-12-19 Bruno Haible <br...@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. --- lib/wctype.in.h.orig Mon Dec 20 02:27:18 2010 +++ lib/wctype.in.h Mon Dec 20 02:27:18 2010 @@ -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 --- lib/iswblank.c.orig Tue Apr 14 12:31:40 2009 +++ lib/iswblank.c Mon Dec 20 02:27:18 2010 @@ -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'; +} --- m4/wctype_h.m4.orig Mon Dec 20 02:27:18 2010 +++ m4/wctype_h.m4 Mon Dec 20 02:27:18 2010 @@ -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 ]) --- modules/wctype.orig Mon Dec 20 02:27:18 2010 +++ modules/wctype Mon Dec 20 02:27:18 2010 @@ -3,6 +3,7 @@ Files: lib/wctype.in.h +lib/iswblank.c m4/wctype_h.m4 m4/wint_t.m4