# 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)