56 lines
1.7 KiB
Diff
Executable File
56 lines
1.7 KiB
Diff
Executable File
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 6c983c6698..21bcd414a0 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -15,6 +15,7 @@ include(CheckCSourceCompiles)
|
|
include(CheckCSourceRuns)
|
|
include(CMakeDependentOption)
|
|
include(CheckCXXSymbolExists)
|
|
+include(CheckStructHasMember)
|
|
include(CheckTypeSize)
|
|
include(FindThreads)
|
|
include(GNUInstallDirs)
|
|
@@ -495,8 +496,12 @@ endif()
|
|
|
|
if(NOT WIN32)
|
|
set(ZMQ_HAVE_IPC 1)
|
|
+ set(ZMQ_HAVE_STRUCT_SOCKADDR_UN 1)
|
|
else()
|
|
check_include_files("winsock2.h;afunix.h" ZMQ_HAVE_IPC)
|
|
+ if(ZMQ_HAVE_IPC)
|
|
+ check_struct_has_member("struct sockaddr_un" sun_path "winsock2.h;afunix.h" ZMQ_HAVE_STRUCT_SOCKADDR_UN)
|
|
+ endif()
|
|
endif()
|
|
|
|
# ##################### BEGIN condition_variable_t selection
|
|
diff --git a/builds/cmake/platform.hpp.in b/builds/cmake/platform.hpp.in
|
|
index 2d23e8b288..18064362fe 100644
|
|
--- a/builds/cmake/platform.hpp.in
|
|
+++ b/builds/cmake/platform.hpp.in
|
|
@@ -59,6 +59,7 @@
|
|
#cmakedefine ZMQ_HAVE_LIBBSD
|
|
|
|
#cmakedefine ZMQ_HAVE_IPC
|
|
+#cmakedefine ZMQ_HAVE_STRUCT_SOCKADDR_UN
|
|
|
|
#cmakedefine ZMQ_USE_BUILTIN_SHA1
|
|
#cmakedefine ZMQ_USE_NSS
|
|
diff --git a/src/windows.hpp b/src/windows.hpp
|
|
index 11c7581dee..24cce83d11 100644
|
|
--- a/src/windows.hpp
|
|
+++ b/src/windows.hpp
|
|
@@ -98,3 +98,13 @@ static inline int poll (struct pollfd *pfd, unsigned long nfds, int timeout)
|
|
#define snprintf(buffer_, count_, format_, ...) \
|
|
_snprintf_s (buffer_, count_, _TRUNCATE, format_, __VA_ARGS__)
|
|
#endif
|
|
+
|
|
+// Workaround missing struct sockaddr_un in afunix.h.
|
|
+// Fix #3949.
|
|
+#if defined(ZMQ_HAVE_IPC) && !defined(ZMQ_HAVE_STRUCT_SOCKADDR_UN)
|
|
+struct sockaddr_un
|
|
+{
|
|
+ ADDRESS_FAMILY sun_family; /* AF_UNIX */
|
|
+ char sun_path[108]; /* pathname */
|
|
+};
|
|
+#endif
|