# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1610738547 0 # Node ID 95ad22a4da2d48e276d71f841ea6da5578dcc838 # Parent a0784aa36bde06136c560421c2361ab06c8ec832 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. diff -r a0784aa36bde -r 95ad22a4da2d Version --- 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 diff -r a0784aa36bde -r 95ad22a4da2d dw.h --- 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" diff -r a0784aa36bde -r 95ad22a4da2d dwcompat.h --- 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 */