From: Kevin McCarthy Date: Wed, 27 Apr 2016 20:08:52 +0000 (-0700) Subject: Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes ... X-Git-Tag: neomutt-20160822~169^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67f9ee24524f9c7279d654faa815575b600a4166;p=neomutt Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes #3833) Solaris includes "sys/stream.h" inside their "sys/socket.h". This include file adds many non-reserved macros to Mutt's namespace, two of which conflict with existing Mutt macros. The simplest fix would be to rename those macros in Mutt, however this will cause difficulty with out-of-tree patches. This fix creates a wrapper include file that preserves those existing macros and prevents the Solaris values from entering Mutt's namespace. --- diff --git a/Makefile.am b/Makefile.am index 9afb6ce74..9ee3faecb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -72,7 +72,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO UPDATING \ README.SSL smime.h group.h \ muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ ChangeLog mkchangelog.sh mutt_idna.h \ - snprintf.c regex.c crypt-gpgme.h hcachever.sh.in \ + snprintf.c regex.c crypt-gpgme.h hcachever.sh.in sys_socket.h \ txt2c.c txt2c.sh version.sh check_sec.sh EXTRA_SCRIPTS = smime_keys diff --git a/getdomain.c b/getdomain.c index 209848b79..9bc0c91e3 100644 --- a/getdomain.c +++ b/getdomain.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include "sys_socket.h" #include "mutt.h" diff --git a/mutt_sasl.c b/mutt_sasl.c index d580c477b..0a00c815e 100644 --- a/mutt_sasl.c +++ b/mutt_sasl.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include "sys_socket.h" #include static int getnameinfo_err(int ret) diff --git a/mutt_socket.c b/mutt_socket.c index 4708f9c42..6cfcc68cd 100644 --- a/mutt_socket.c +++ b/mutt_socket.c @@ -40,7 +40,7 @@ #ifdef HAVE_SYS_TIME_H #include #endif -#include +#include "sys_socket.h" #ifdef HAVE_SYS_SELECT_H #include #endif diff --git a/mutt_tunnel.c b/mutt_tunnel.c index b43bbf935..49172160c 100644 --- a/mutt_tunnel.c +++ b/mutt_tunnel.c @@ -27,7 +27,7 @@ #include #include -#include +#include "sys_socket.h" #include #include #include diff --git a/sys_socket.h b/sys_socket.h new file mode 100644 index 000000000..68ffe2500 --- /dev/null +++ b/sys_socket.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2016 Kevin J. McCarthy + * + * 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 of the License, 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. + */ + +/* Solaris, OpenIndiana, and probably other derivatives + * are including sys/stream.h inside their sys/socket.h. + * + * This include file is defining macros M_CMD and M_READ which + * are conflicting with the same macros Mutt defines in mutt.h + * + * To minimize breakage with out-of-tree patches, this is a workaround. + */ + +#ifdef M_CMD +# define MUTT_ORIG_CMD M_CMD +# undef M_CMD +#endif + +#ifdef M_READ +# define MUTT_ORIG_READ M_READ +# undef M_READ +#endif + +#include + +#undef M_CMD +#undef M_READ + +#ifdef MUTT_ORIG_CMD +# define M_CMD MUTT_ORIG_CMD +# undef MUTT_ORIG_CMD +#endif + +#ifdef MUTT_ORIG_READ +# define M_READ MUTT_ORIG_READ +# undef MUTT_ORIG_READ +#endif