On Solaris, when GNU gettext has installed its <libintl.h>, and when an older Solaris cc is in use, and when NLS is disabled (as in m4-1.4.13), the compiler gives the following warnings:
"./gettext.h", line 66: warning: macro redefined: gettext "./gettext.h", line 67: warning: macro redefined: dgettext "./gettext.h", line 68: warning: macro redefined: dcgettext "./gettext.h", line 70: warning: macro redefined: ngettext "./gettext.h", line 74: warning: macro redefined: dngettext "./gettext.h", line 76: warning: macro redefined: dcngettext "./gettext.h", line 78: warning: macro redefined: textdomain "./gettext.h", line 79: warning: macro redefined: bindtextdomain "./gettext.h", line 81: warning: macro redefined: bind_textdomain_codeset This fixes it. 2009-05-01 Bruno Haible <br...@clisp.org> Avoid compiler warnings when redefining macros defined by <libintl.h>. * lib/gettext.h [!ENABLE_NLS] (gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext, textdomain, bindtextdomain, bind_textdomain_codeset): Undefine before redefining. --- lib/gettext.h.orig 2009-05-01 16:08:51.000000000 +0200 +++ lib/gettext.h 2009-05-01 16:08:04.000000000 +0200 @@ -1,5 +1,5 @@ /* Convenience header for conditional use of GNU <libintl.h>. - Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc. + Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 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 @@ -63,21 +63,30 @@ for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ +# undef gettext # define gettext(Msgid) ((const char *) (Msgid)) +# undef dgettext # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) +# undef dcgettext # define dcgettext(Domainname, Msgid, Category) \ ((void) (Category), dgettext (Domainname, Msgid)) +# undef ngettext # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 \ ? ((void) (Msgid2), (const char *) (Msgid1)) \ : ((void) (Msgid1), (const char *) (Msgid2))) +# undef dngettext # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) +# undef dcngettext # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N)) +# undef textdomain # define textdomain(Domainname) ((const char *) (Domainname)) +# undef bindtextdomain # define bindtextdomain(Domainname, Dirname) \ ((void) (Domainname), (const char *) (Dirname)) +# undef bind_textdomain_codeset # define bind_textdomain_codeset(Domainname, Codeset) \ ((void) (Domainname), (const char *) (Codeset))