changeset 14844:d6cca2f0c240

wctype-h: Avoid namespace pollution on Solaris 2.6. * lib/wctype.in.h: On Solaris, undefine 'multibyte' and a few other identifiers. * doc/posix-headers/wctype.texi: Mention the problem. Reported by Tom G. Christensen <tgc@jupiterrise.com>.
author Bruno Haible <bruno@clisp.org>
date Sat, 28 May 2011 20:58:14 +0200
parents c2b5c400a991
children 7f850a75bbdb
files ChangeLog doc/posix-headers/wctype.texi lib/wctype.in.h
diffstat 3 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-05-29  Bruno Haible  <bruno@clisp.org>
+
+	wctype-h: Avoid namespace pollution on Solaris 2.6.
+	* lib/wctype.in.h: On Solaris, undefine 'multibyte' and a few other
+	identifiers.
+	* doc/posix-headers/wctype.texi: Mention the problem.
+	Reported by Tom G. Christensen <tgc@jupiterrise.com>.
+
 2011-05-28  Jim Meyering  <meyering@redhat.com>
 
 	parse-datetime.y: accommodate -Wstrict-overflow
--- a/doc/posix-headers/wctype.texi
+++ b/doc/posix-headers/wctype.texi
@@ -25,6 +25,10 @@
 @item
 The functions @code{isw*} are actually defined as macros that don't work,
 on IRIX 5.3.
+@item
+This header file defines some identifiers, such as @code{multibyte}, as macros
+on some platforms:
+Solaris 2.6.
 @end itemize
 
 Portability problems not fixed by Gnulib:
--- a/lib/wctype.in.h
+++ b/lib/wctype.in.h
@@ -59,6 +59,19 @@
 
 /* The definition of _GL_WARN_ON_USE is copied here.  */
 
+/* Solaris 2.6 <wctype.h> includes <widec.h> which includes <euc.h> which
+   #defines a number of identifiers in the application namespace.  Revert
+   these #defines.  */
+#ifdef __sun
+# undef multibyte
+# undef eucw1
+# undef eucw2
+# undef eucw3
+# undef scrw1
+# undef scrw2
+# undef scrw3
+#endif
+
 /* Define wint_t and WEOF.  (Also done in wchar.in.h.)  */
 #if !@HAVE_WINT_T@ && !defined wint_t
 # define wint_t int