# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1116561303 0 # Node ID 53639d92073531cc88451b8a37084fd021f3ab18 # Parent d7c338ac926ad3d7daf254de6b5220fa2a39e4b0 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h. diff -r d7c338ac926a -r 53639d920735 compat.h --- a/compat.h Fri May 20 03:32:25 2005 +0000 +++ b/compat.h Fri May 20 03:55:03 2005 +0000 @@ -142,6 +142,7 @@ #ifdef MSVC #include "platform/dirent.h" +#define alloca _alloca #else #include #include @@ -296,7 +297,7 @@ #define sockpipe(pipes) { \ struct sockaddr_in server_addr; \ struct sockaddr_in listen_addr = { 0 }; \ - int len = sizeof(struct sockaddr_in); \ + int tmpsock, len = sizeof(struct sockaddr_in); \ struct hostent *he = gethostbyname("localhost"); \ pipes[0] = pipes[1] = -1; \ if(he) \ @@ -305,19 +306,19 @@ server_addr.sin_family = AF_INET; \ server_addr.sin_port = 0; \ server_addr.sin_addr.s_addr = INADDR_ANY; \ - if ((tmpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0 || bind(tmpsock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0 || listen(tmpsock, 0) < 0) \ - break; \ - 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)) < 0 || connect(pipes[1], (struct sockaddr *)&server_addr, sizeof(server_addr))) \ - break; \ - else \ - pipes[0] = accept(tmpsock, 0, 0); \ + 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); \ - } + } \ +} #endif #define socksprint(a, b) sockwrite(a, b, strlen(b), 0)