]> granicus.if.org Git - neomutt/commitdiff
Create a wrapper sys_socket.h to work around Solaris namespace issues. (closes ...
authorKevin McCarthy <kevin@8t8.us>
Wed, 27 Apr 2016 20:08:52 +0000 (13:08 -0700)
committerKevin McCarthy <kevin@8t8.us>
Wed, 27 Apr 2016 20:08:52 +0000 (13:08 -0700)
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.

Makefile.am
getdomain.c
mutt_sasl.c
mutt_socket.c
mutt_tunnel.c
sys_socket.h [new file with mode: 0644]

index 9afb6ce74acc99bee2af256a4acdf5d4f0896ab4..9ee3faecb974e3876c479c7f0ec3d204874cee2b 100644 (file)
@@ -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
index 209848b7956a8ed748f61e645b801f0288fb7ce1..9bc0c91e3ac59ca779a392f1e87fe2529a1e1ce4 100644 (file)
@@ -24,7 +24,7 @@
 #include <unistd.h>
 #include <netdb.h>
 #include <sys/types.h>
-#include <sys/socket.h>
+#include "sys_socket.h"
 
 #include "mutt.h"
 
index d580c477b013fad3930889a2058ddcf2e100012b..0a00c815e79bd4d1f8226182b344e55f9aa6a211 100644 (file)
@@ -30,7 +30,7 @@
 #include <errno.h>
 #include <netdb.h>
 #include <sasl/sasl.h>
-#include <sys/socket.h>
+#include "sys_socket.h"
 #include <netinet/in.h>
 
 static int getnameinfo_err(int ret)
index 4708f9c42610a52d19c2828c110c292420b8cf9d..6cfcc68cdc057157881228642b63e1a624d6cf91 100644 (file)
@@ -40,7 +40,7 @@
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
-#include <sys/socket.h>
+#include "sys_socket.h"
 #ifdef HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
index b43bbf9356aa328c6fd2e543dcefc5b773bd57e5..49172160c39f6d8f83e0c1273409b53991cc9f1a 100644 (file)
@@ -27,7 +27,7 @@
 
 #include <netinet/in.h>
 #include <sys/types.h>
-#include <sys/socket.h>
+#include "sys_socket.h"
 #include <sys/wait.h>
 #include <fcntl.h>
 #include <errno.h>
diff --git a/sys_socket.h b/sys_socket.h
new file mode 100644 (file)
index 0000000..68ffe25
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2016 Kevin J. McCarthy <kevin@8t8.us>
+ *
+ *     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 <sys/socket.h>
+
+#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