changeset 2239:95ad22a4da2d

Bump version to 3.2 now that we are post 3.1 release. Rename the fallback sockpipe() macro to oldsockpipe() which is now always available. If compiled with domain socket support and domain sockets fail to create, fallback to oldsockpipe(). This hopefully will let us just have a single build for Vista to 10 with domain socket support.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 15 Jan 2021 19:22:27 +0000
parents a0784aa36bde
children 7f6939857cca
files Version dw.h dwcompat.h
diffstat 3 files changed, 39 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/Version	Wed Jan 06 17:52:51 2021 +0000
+++ b/Version	Fri Jan 15 19:22:27 2021 +0000
@@ -1,3 +1,3 @@
 # Set these here to change the version for all platforms
 DW_MAJOR_VERSION=3
-DW_MINOR_VERSION=1
+DW_MINOR_VERSION=2
--- a/dw.h	Wed Jan 06 17:52:51 2021 +0000
+++ b/dw.h	Fri Jan 15 19:22:27 2021 +0000
@@ -9,7 +9,7 @@
 
 /* Dynamic Windows version numbers */
 #define DW_MAJOR_VERSION 3
-#define DW_MINOR_VERSION 1
+#define DW_MINOR_VERSION 2
 #define DW_SUB_VERSION 0
 
 #define DW_HOME_URL "http://dwindows.netlabs.org"
--- a/dwcompat.h	Wed Jan 06 17:52:51 2021 +0000
+++ b/dwcompat.h	Fri Jan 15 19:22:27 2021 +0000
@@ -369,25 +369,7 @@
 #define sockshutdown()
 #endif
 
-#ifdef HAVE_PIPE
-#define sockpipe(pipes) { if(pipe(pipes) < 0) pipes[0] = pipes[1] = -1; }
-#elif !defined(NO_DOMAIN_SOCKETS)
-#define sockpipe(pipes) { \
-	struct sockaddr_un un; \
-	int tmpsock = socket(AF_UNIX, SOCK_STREAM, 0); \
-	pipes[1] = socket(AF_UNIX, SOCK_STREAM, 0); \
-	memset(&un, 0, sizeof(un)); \
-	un.sun_family=AF_UNIX; \
-	sprintf(un.sun_path, PIPENAME, PIPEROOT, (int)getpid(), pipes[1]); \
-	unlink(un.sun_path); \
-	bind(tmpsock, (struct sockaddr *)&un, sizeof(un)); \
-	listen(tmpsock, 0); \
-	connect(pipes[1], (struct sockaddr *)&un, sizeof(un)); \
-	pipes[0] = accept(tmpsock, 0, 0); \
-	sockclose(tmpsock); \
-	}
-#else
-#define sockpipe(pipes) { \
+#define oldsockpipe(pipes) { \
 	struct sockaddr_in server_addr; \
 	struct sockaddr_in listen_addr = { 0 }; \
 	int tmpsock, len = sizeof(struct sockaddr_in); \
@@ -400,18 +382,44 @@
 		server_addr.sin_port   = 0; \
 		server_addr.sin_addr.s_addr = INADDR_ANY; \
 		if ((tmpsock = socket(AF_INET, SOCK_STREAM, 0)) > -1 && bind(tmpsock, (struct sockaddr *)&server_addr, sizeof(server_addr)) > -1 && listen(tmpsock, 0) > -1) \
-	    { \
-		    memset(&listen_addr, 0, sizeof(listen_addr)); \
-		    getsockname(tmpsock, (struct sockaddr *)&listen_addr, &len); \
-		    server_addr.sin_family      = AF_INET; \
-		    server_addr.sin_port        = listen_addr.sin_port; \
-		    server_addr.sin_addr.s_addr = *((unsigned long *)he->h_addr); \
-		    if((pipes[1] = socket(AF_INET, SOCK_STREAM, 0)) > -1 && !connect(pipes[1], (struct sockaddr *)&server_addr, sizeof(server_addr))) \
-			   pipes[0] = accept(tmpsock, 0, 0); \
-	    } \
-		sockclose(tmpsock); \
+		{ \
+			memset(&listen_addr, 0, sizeof(listen_addr)); \
+			getsockname(tmpsock, (struct sockaddr *)&listen_addr, &len); \
+			server_addr.sin_family      = AF_INET; \
+			server_addr.sin_port        = listen_addr.sin_port; \
+			server_addr.sin_addr.s_addr = *((unsigned long *)he->h_addr); \
+			if((pipes[1] = socket(AF_INET, SOCK_STREAM, 0)) > -1 && !connect(pipes[1], (struct sockaddr *)&server_addr, sizeof(server_addr))) \
+				pipes[0] = accept(tmpsock, 0, 0); \
+		} \
+		if(tmpsock > -1) \
+			sockclose(tmpsock); \
 	} \
 }
+
+#ifdef HAVE_PIPE
+#define sockpipe(pipes) { if(pipe(pipes) < 0) pipes[0] = pipes[1] = -1; }
+#elif !defined(NO_DOMAIN_SOCKETS)
+#define sockpipe(pipes) { \
+	struct sockaddr_un un; \
+	int tmpsock = socket(AF_UNIX, SOCK_STREAM, 0); \
+	pipes[0] = pipes[1] = -1; \
+	if(tmpsock > -1 && (pipes[1] = socket(AF_UNIX, SOCK_STREAM, 0)) > -1) \
+	{ \
+		memset(&un, 0, sizeof(un)); \
+		un.sun_family=AF_UNIX; \
+		sprintf(un.sun_path, PIPENAME, PIPEROOT, (int)getpid(), pipes[1]); \
+		unlink(un.sun_path); \
+		bind(tmpsock, (struct sockaddr *)&un, sizeof(un)); \
+		listen(tmpsock, 0); \
+		connect(pipes[1], (struct sockaddr *)&un, sizeof(un)); \
+		pipes[0] = accept(tmpsock, 0, 0); \
+	} else \
+		oldsockpipe(pipes); \
+	if(tmpsock > -1) \
+		sockclose(tmpsock); \
+	}
+#else
+#define sockpipe(pipes) oldsockpipe(pipes)
 #endif
 
 /* Ok Windows and OS/2 both seem to be missing this */