[Libevent-users] Success compile libevent 1.4.3 with VC6

Eugene 'HMage' Bujak hmd at mail.ru
Wed Apr 23 09:34:04 EDT 2008


Hi,

I want to submit a more complete patch for VC6.

This one makes all elements of the code compilable and this code is
being used on a production-level project at work.

The patch is in attachment. Compiles and works under VC6.
* signal_test works.
* timer_test works.
* event_test fails due to the reason that win32 select() can't work on
anything but network sockets.

Most importantly, my code that runs perfectly well on unix (linux &
freebsd) now runs on windows with little modification.

But:
* Didn't try to run any other tests since there are no project files for
them.
* Didn't test how mingw32 copes with these changes either.

The main changes are:
* INPUT and OUTPUT are defined in platform SDK, so I had to redefine
them as EVRPC_INPUT and EVRPC_OUTPUT.
* uint64_t on MSVC must be defined as unsigned __int64
* int64_t on MSVC is to be defined as signed __int64
* MSVC6 doesn't know about __func__ and the #ifdefs weren't guarding
against them good enough.
* winsock2.h sometimes was included after windows.h, that lead to
compiler errors in libevent.
* select.c can be painlessly excluded from compilation in win32, but I
still fixed it's compilation.
* Winsock library needs to be initialized and freed explicitly on win32.
* http.c was using sockaddr_storage. There isn't one in MSVC. Using
sockaddr is good enough for MSVC.
* There are tons of compiler warnings regarding "do {} while(0);"
* I took the liberty to add #pragma to the WIN32-section of the event.h
so that there's no need to put ws2_32 library into the linker explicitly.
* There's no NFDBITS in msvc.
* vsnprintf() is _vsnprintf() for some weird reason on win32.
* I've had to bump tv->tv_usec to 1000 to prevent eating 100% of the cpu
core in win32 dispatch when using timers with events each 10ms or so.
* Also I've provided a gettimeofday() wrapper that uses timeGetTime()
instead of much slower _ftime().



Also, I would like to ask the maintainer of the project to change
svn:eol-style property of .dsw and .dsp files on SVN repository toto
CRLF, since project loader handles these files properly only when line
endings are in windows style.


-- 
- Eugene 'HMage' Bujak.

-------------- next part --------------
diff -ur libevent-1.4.3-stable/WIN32-Code/config.h libevent-1.4.3-stable-win32/WIN32-Code/config.h
--- libevent-1.4.3-stable/WIN32-Code/config.h	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Code/config.h	Wed Apr 23 17:31:03 2008
@@ -205,8 +205,8 @@
 /* Version number of package */
 #define VERSION "1.3.99-trunk"
 
-/* Define to appropriate substitue if compiler doesnt have __func__ */
-#if defined(_MSC_VER) && _MSC_VER < 1300
+/* Define to appropriate substitute if compiler doesn't have __func__ */
+#ifdef _MSC_VER
 #define __func__ "??"
 #else
 #define __func__ __FUNCTION__
diff -ur libevent-1.4.3-stable/WIN32-Code/misc.c libevent-1.4.3-stable-win32/WIN32-Code/misc.c
--- libevent-1.4.3-stable/WIN32-Code/misc.c	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Code/misc.c	Wed Apr 23 17:31:03 2008
@@ -1,9 +1,14 @@
 #include <stdio.h>
 #include <string.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #include <sys/timeb.h>
 #include <time.h>
 
+#ifdef _MSC_VER
+#pragma comment(lib,"winmm")
+#endif
+
 #ifdef __GNUC__
 /*our prototypes for timeval and timezone are in here, just in case the above
   headers don't have them*/
@@ -16,7 +21,7 @@
  *
  * Purpose:  Get current time of day.
  *
- * Arguments: tv => Place to store the curent time of day.
+ * Arguments: tv => Place to store the current time of day.
  *            tz => Ignored.
  *
  * Returns: 0 => Success.
@@ -24,6 +29,7 @@
  ****************************************************************************/
 
 #ifndef HAVE_GETTIMEOFDAY
+#ifndef _WIN32
 int gettimeofday(struct timeval *tv, struct timezone *tz) {
 	struct _timeb tb;
 
@@ -35,6 +41,21 @@
 	tv->tv_usec = ((int) tb.millitm) * 1000;
 	return 0;
 }
+#else
+struct timezone;
+int gettimeofday(struct timeval *tv, struct timezone *tz) {
+	DWORD ms;
+	tz;
+	if(tv == NULL)
+		return -1;
+
+	ms = timeGetTime();
+	tv->tv_sec = ms / 1000;//(long)floor(ms * 0.001);
+	tv->tv_usec = (ms - (tv->tv_sec*1000))*1000;
+
+	return 0;
+}
+#endif
 #endif
 
 #if 0
diff -ur libevent-1.4.3-stable/WIN32-Code/win32.c libevent-1.4.3-stable-win32/WIN32-Code/win32.c
--- libevent-1.4.3-stable/WIN32-Code/win32.c	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Code/win32.c	Wed Apr 23 17:32:04 2008
@@ -32,7 +32,7 @@
 #include "../config.h"
 #endif
 
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #include <sys/types.h>
 #include <sys/queue.h>
@@ -234,6 +234,27 @@
 {
 	struct win32op *winop;
 	size_t size;
+
+#ifdef _WIN32
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int	retval;
+
+	wVersionRequested = MAKEWORD( 2, 2 );
+
+	retval = WSAStartup( wVersionRequested, &wsaData );
+	if (retval != 0) {
+		event_err(1, "Couldn't initialize WinSock library.\n");
+		return NULL;
+	}
+
+	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
+		event_err(1, "WinSock library is not acceptable version.\n");
+		return NULL;
+	}
+
+#endif
+
 	if (!(winop = calloc(1, sizeof(struct win32op))))
 		return NULL;
 	winop->fd_setsz = NEVENT;
@@ -360,11 +381,17 @@
 
 	if (!fd_count) {
 		/* Windows doesn't like you to call select() with no sockets */
-		Sleep(timeval_to_ms(tv));
+		int sleep_ms = timeval_to_ms(tv);
+		if (sleep_ms <= 0) sleep_ms = 1;
+		Sleep(sleep_ms);
 		evsignal_process(base);
 		return (0);
 	}
 
+	if ((tv) && (tv->tv_usec == 0) && (tv->tv_sec == 0)) {
+		tv->tv_usec = 1000;
+	}
+
 	res = select(fd_count,
 		     (struct fd_set*)win32op->readset_out,
 		     (struct fd_set*)win32op->writeset_out,
@@ -423,6 +450,8 @@
 	if (win32op->exset_out)
 		free(win32op->exset_out);
 	/* XXXXX free the tree. */
+
+	WSACleanup();
 
 	memset(win32op, 0, sizeof(win32op));
 	free(win32op);
diff -ur libevent-1.4.3-stable/WIN32-Prj/event_test/event_test.dsp libevent-1.4.3-stable-win32/WIN32-Prj/event_test/event_test.dsp
--- libevent-1.4.3-stable/WIN32-Prj/event_test/event_test.dsp	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Prj/event_test/event_test.dsp	Wed Apr 23 17:31:03 2008
@@ -39,6 +39,7 @@
 # PROP Use_Debug_Libraries 0
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
 # ADD CPP /nologo /W3 /GX /O2 /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
@@ -49,7 +50,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386
 
 !ELSEIF  "$(CFG)" == "event_test - Win32 Debug"
 
@@ -62,6 +63,7 @@
 # PROP Use_Debug_Libraries 1
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
 # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
@@ -72,7 +74,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
 
 !ENDIF 
 
diff -ur libevent-1.4.3-stable/WIN32-Prj/libevent.dsp libevent-1.4.3-stable-win32/WIN32-Prj/libevent.dsp
--- libevent-1.4.3-stable/WIN32-Prj/libevent.dsp	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Prj/libevent.dsp	Wed Apr 23 17:31:03 2008
@@ -41,7 +41,7 @@
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\\" /I "..\WIN32-Code" /I "..\compat" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\\" /I "..\WIN32-Code" /I "..\compat" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /YX /FD /c
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
 # ADD RSC /l 0x409 /d "NDEBUG"
 BSC32=bscmake.exe
@@ -64,7 +64,7 @@
 # PROP Intermediate_Dir "Debug"
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\\" /I "..\WIN32-Code" /I "..\compat" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\\" /I "..\WIN32-Code" /I "..\compat" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /YX /FD /GZ /c
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
 # ADD RSC /l 0x409 /d "_DEBUG"
 BSC32=bscmake.exe
@@ -85,7 +85,11 @@
 # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
 # Begin Source File
 
-SOURCE=..\log.c
+SOURCE=..\buffer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\evbuffer.c
 # End Source File
 # Begin Source File
 
@@ -93,10 +97,38 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\event_tagging.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\evrpc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\evutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\log.c
+# End Source File
+# Begin Source File
+
 SOURCE="..\WIN32-Code\misc.c"
 # End Source File
 # Begin Source File
 
+SOURCE=..\select.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\signal.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\strlcpy.c
+# End Source File
+# Begin Source File
+
 SOURCE="..\WIN32-Code\win32.c"
 # End Source File
 # End Group
@@ -117,11 +149,59 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\evdns.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\event-config.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\event-internal.h"
+# End Source File
+# Begin Source File
+
 SOURCE=..\event.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\evhttp.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\evrpc-internal.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\evrpc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\evsignal.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\evutil.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\http-internal.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\log.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\min_heap.h
+# End Source File
+# Begin Source File
+
 SOURCE="..\WIN32-Code\misc.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\strlcpy-internal.h"
 # End Source File
 # End Group
 # End Target
diff -ur libevent-1.4.3-stable/WIN32-Prj/signal_test/signal_test.dsp libevent-1.4.3-stable-win32/WIN32-Prj/signal_test/signal_test.dsp
--- libevent-1.4.3-stable/WIN32-Prj/signal_test/signal_test.dsp	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Prj/signal_test/signal_test.dsp	Wed Apr 23 17:31:03 2008
@@ -39,17 +39,18 @@
 # PROP Use_Debug_Libraries 0
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
 # ADD RSC /l 0x409 /d "NDEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386
 
 !ELSEIF  "$(CFG)" == "signal_test - Win32 Debug"
 
@@ -62,17 +63,18 @@
 # PROP Use_Debug_Libraries 1
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ  /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ  /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
 # ADD RSC /l 0x409 /d "_DEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
 
 !ENDIF 
 
diff -ur libevent-1.4.3-stable/WIN32-Prj/time_test/time_test.dsp libevent-1.4.3-stable-win32/WIN32-Prj/time_test/time_test.dsp
--- libevent-1.4.3-stable/WIN32-Prj/time_test/time_test.dsp	Wed Apr 23 17:31:16 2008
+++ libevent-1.4.3-stable-win32/WIN32-Prj/time_test/time_test.dsp	Wed Apr 23 17:31:03 2008
@@ -39,17 +39,18 @@
 # PROP Use_Debug_Libraries 0
 # PROP Output_Dir "Release"
 # PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
 # ADD RSC /l 0x409 /d "NDEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386
 
 !ELSEIF  "$(CFG)" == "time_test - Win32 Debug"
 
@@ -62,17 +63,18 @@
 # PROP Use_Debug_Libraries 1
 # PROP Output_Dir "Debug"
 # PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ  /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ  /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\\" /I "..\..\WIN32-Code" /I "..\..\compat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
 # ADD RSC /l 0x409 /d "_DEBUG"
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
 
 !ENDIF 
 
diff -ur libevent-1.4.3-stable/buffer.c libevent-1.4.3-stable-win32/buffer.c
--- libevent-1.4.3-stable/buffer.c	Wed Apr 23 17:31:13 2008
+++ libevent-1.4.3-stable-win32/buffer.c	Wed Apr 23 17:31:00 2008
@@ -30,7 +30,7 @@
 #endif
 
 #ifdef WIN32
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 
@@ -155,7 +155,7 @@
 		va_copy(aq, ap);
 
 #ifdef WIN32
-		sz = vsnprintf(buffer, space - 1, fmt, aq);
+		sz = _vsnprintf(buffer, space - 1, fmt, aq);
 		buffer[space - 1] = '\0';
 #else
 		sz = vsnprintf(buffer, space, fmt, aq);
diff -ur libevent-1.4.3-stable/compat/sys/_time.h libevent-1.4.3-stable-win32/compat/sys/_time.h
--- libevent-1.4.3-stable/compat/sys/_time.h	Wed Apr 23 17:31:13 2008
+++ libevent-1.4.3-stable-win32/compat/sys/_time.h	Wed Apr 23 17:31:01 2008
@@ -41,10 +41,12 @@
  * Structure returned by gettimeofday(2) system call,
  * and used in other calls.
  */
+#ifndef _MSC_VER // MSVC defines this in winsock2.h
 struct timeval {
 	long	tv_sec;		/* seconds */
 	long	tv_usec;	/* and microseconds */
 };
+#endif
 
 /*
  * Structure defined by POSIX.1b to be like a timeval.
@@ -78,10 +80,12 @@
 /* Operations on timevals. */
 #define	timerclear(tvp)		(tvp)->tv_sec = (tvp)->tv_usec = 0
 #define	timerisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
+#ifndef _MSC_VER // MSVC defines this in winsock2.h
 #define	timercmp(tvp, uvp, cmp)						\
 	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
 	    ((tvp)->tv_usec cmp (uvp)->tv_usec) :			\
 	    ((tvp)->tv_sec cmp (uvp)->tv_sec))
+#endif
 #define	timeradd(tvp, uvp, vvp)						\
 	do {								\
 		(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec;		\
diff -ur libevent-1.4.3-stable/evdns.c libevent-1.4.3-stable-win32/evdns.c
--- libevent-1.4.3-stable/evdns.c	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/evdns.c	Wed Apr 23 17:31:01 2008
@@ -105,7 +105,7 @@
 #include "evutil.h"
 #include "log.h"
 #ifdef WIN32
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #include <iphlpapi.h>
 #include <io.h>
diff -ur libevent-1.4.3-stable/event-config.h libevent-1.4.3-stable-win32/event-config.h
--- libevent-1.4.3-stable/event-config.h	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/event-config.h	Wed Apr 23 17:31:01 2008
@@ -51,7 +51,9 @@
 #define _EVENT_HAVE_INET_NTOP 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
+#ifndef _MSC_VER // MSVC doesn't have that
 #define _EVENT_HAVE_INTTYPES_H 1
+#endif
 
 /* Define to 1 if you have the `kqueue' function. */
 #define _EVENT_HAVE_KQUEUE 1
@@ -105,7 +107,9 @@
 #define _EVENT_HAVE_STDARG_H 1
 
 /* Define to 1 if you have the <stdint.h> header file. */
+#ifndef _MSC_VER // MSVC doesn't have that
 #define _EVENT_HAVE_STDINT_H 1
+#endif
 
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define _EVENT_HAVE_STDLIB_H 1
@@ -159,7 +163,9 @@
 #define _EVENT_HAVE_SYS_STAT_H 1
 
 /* Define to 1 if you have the <sys/time.h> header file. */
+#ifndef _MSC_VER // MSVC doesn't have that
 #define _EVENT_HAVE_SYS_TIME_H 1
+#endif
 
 /* Define to 1 if you have the <sys/types.h> header file. */
 #define _EVENT_HAVE_SYS_TYPES_H 1
@@ -183,10 +189,14 @@
 #define _EVENT_HAVE_UINT16_T 1
 
 /* Define to 1 if the system has the type `uint32_t'. */
+#ifndef _MSC_VER // MSVC doesn't have that
 #define _EVENT_HAVE_UINT32_T 1
+#endif
 
 /* Define to 1 if the system has the type `uint64_t'. */
+#ifndef _MSC_VER // MSVC doesn't have that
 #define _EVENT_HAVE_UINT64_T 1
+#endif
 
 /* Define to 1 if the system has the type `uint8_t'. */
 #define _EVENT_HAVE_UINT8_T 1
diff -ur libevent-1.4.3-stable/event-internal.h libevent-1.4.3-stable-win32/event-internal.h
--- libevent-1.4.3-stable/event-internal.h	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/event-internal.h	Wed Apr 23 17:31:01 2008
@@ -31,6 +31,13 @@
 extern "C" {
 #endif
 
+#ifdef _WIN32 // MSVC doesn't have that
+#ifndef NFDBITS
+typedef long int fd_mask;
+#define NFDBITS (8 * sizeof(fd_mask))
+#endif
+#endif
+	
 #include "config.h"
 #include "min_heap.h"
 #include "evsignal.h"
diff -ur libevent-1.4.3-stable/event.c libevent-1.4.3-stable-win32/event.c
--- libevent-1.4.3-stable/event.c	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/event.c	Wed Apr 23 17:31:01 2008
@@ -30,6 +30,7 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
 #include "misc.h"
diff -ur libevent-1.4.3-stable/event.h libevent-1.4.3-stable-win32/event.h
--- libevent-1.4.3-stable/event.h	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/event.h	Wed Apr 23 17:31:01 2008
@@ -176,7 +176,9 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
+#pragma comment(lib,"ws2_32") // automatically link ws2_32 library on Win32
 #undef WIN32_LEAN_AND_MEAN
 typedef unsigned char u_char;
 typedef unsigned short u_short;
diff -ur libevent-1.4.3-stable/event_tagging.c libevent-1.4.3-stable-win32/event_tagging.c
--- libevent-1.4.3-stable/event_tagging.c	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/event_tagging.c	Wed Apr 23 17:31:01 2008
@@ -38,7 +38,7 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
 #else
diff -ur libevent-1.4.3-stable/evhttp.h libevent-1.4.3-stable-win32/evhttp.h
--- libevent-1.4.3-stable/evhttp.h	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/evhttp.h	Wed Apr 23 17:31:01 2008
@@ -35,8 +35,8 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
-#include <winsock2.h>
 #undef WIN32_LEAN_AND_MEAN
 #endif
 
diff -ur libevent-1.4.3-stable/evrpc.c libevent-1.4.3-stable-win32/evrpc.c
--- libevent-1.4.3-stable/evrpc.c	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/evrpc.c	Wed Apr 23 17:31:01 2008
@@ -30,8 +30,8 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
-#include <winsock2.h>
 #undef WIN32_LEAN_AND_MEAN
 #include "misc.h"
 #endif
@@ -89,10 +89,10 @@
 		assert(evrpc_unregister_rpc(base, rpc->uri));
 	}
 	while ((hook = TAILQ_FIRST(&base->input_hooks)) != NULL) {
-		assert(evrpc_remove_hook(base, INPUT, hook));
+		assert(evrpc_remove_hook(base, EVRPC_INPUT, hook));
 	}
 	while ((hook = TAILQ_FIRST(&base->output_hooks)) != NULL) {
-		assert(evrpc_remove_hook(base, OUTPUT, hook));
+		assert(evrpc_remove_hook(base, EVRPC_OUTPUT, hook));
 	}
 	free(base);
 }
@@ -107,14 +107,14 @@
 	struct evrpc_hook_list *head = NULL;
 	struct evrpc_hook *hook = NULL;
 	switch (hook_type) {
-	case INPUT:
+	case EVRPC_INPUT:
 		head = &base->in_hooks;
 		break;
-	case OUTPUT:
+	case EVRPC_OUTPUT:
 		head = &base->out_hooks;
 		break;
 	default:
-		assert(hook_type == INPUT || hook_type == OUTPUT);
+		assert(hook_type == EVRPC_INPUT || hook_type == EVRPC_OUTPUT);
 	}
 
 	hook = calloc(1, sizeof(struct evrpc_hook));
@@ -152,14 +152,14 @@
 	struct _evrpc_hooks *base = vbase;
 	struct evrpc_hook_list *head = NULL;
 	switch (hook_type) {
-	case INPUT:
+	case EVRPC_INPUT:
 		head = &base->in_hooks;
 		break;
-	case OUTPUT:
+	case EVRPC_OUTPUT:
 		head = &base->out_hooks;
 		break;
 	default:
-		assert(hook_type == INPUT || hook_type == OUTPUT);
+		assert(hook_type == EVRPC_INPUT || hook_type == EVRPC_OUTPUT);
 	}
 
 	return (evrpc_remove_hook_internal(head, handle));
@@ -425,11 +425,11 @@
 	}
 
 	while ((hook = TAILQ_FIRST(&pool->input_hooks)) != NULL) {
-		assert(evrpc_remove_hook(pool, INPUT, hook));
+		assert(evrpc_remove_hook(pool, EVRPC_INPUT, hook));
 	}
 
 	while ((hook = TAILQ_FIRST(&pool->output_hooks)) != NULL) {
-		assert(evrpc_remove_hook(pool, OUTPUT, hook));
+		assert(evrpc_remove_hook(pool, EVRPC_OUTPUT, hook));
 	}
 
 	free(pool);
diff -ur libevent-1.4.3-stable/evrpc.h libevent-1.4.3-stable-win32/evrpc.h
--- libevent-1.4.3-stable/evrpc.h	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/evrpc.h	Wed Apr 23 17:31:01 2008
@@ -436,8 +436,8 @@
  */
 
 enum EVRPC_HOOK_TYPE {
-	INPUT,		/**< apply the function to an input hook */
-	OUTPUT		/**< apply the function to an output hook */
+	EVRPC_INPUT,		/**< apply the function to an input hook */
+	EVRPC_OUTPUT		/**< apply the function to an output hook */
 };
 
 /** adds a processing hook to either an rpc base or rpc pool
diff -ur libevent-1.4.3-stable/evutil.c libevent-1.4.3-stable-win32/evutil.c
--- libevent-1.4.3-stable/evutil.c	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/evutil.c	Wed Apr 23 17:31:01 2008
@@ -30,9 +30,10 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
+#include <stdlib.h> // for _atoi64()
 #undef WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
 #include "misc.h"
 #endif
 
diff -ur libevent-1.4.3-stable/evutil.h libevent-1.4.3-stable-win32/evutil.h
--- libevent-1.4.3-stable/evutil.h	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/evutil.h	Wed Apr 23 17:31:01 2008
@@ -55,8 +55,8 @@
 #define ev_uint64_t uint64_t
 #define ev_int64_t int64_t
 #elif defined(WIN32)
-#define ev_uint64_t __uint64_t
-#define ev_int64_t __int64_t
+#define ev_uint64_t unsigned __int64
+#define ev_int64_t signed __int64
 #elif _EVENT_SIZEOF_LONG_LONG == 8
 #define ev_uint64_t unsigned long long
 #define ev_int64_t long long
diff -ur libevent-1.4.3-stable/http.c libevent-1.4.3-stable-win32/http.c
--- libevent-1.4.3-stable/http.c	Wed Apr 23 17:31:14 2008
+++ libevent-1.4.3-stable-win32/http.c	Wed Apr 23 17:31:02 2008
@@ -1982,7 +1982,12 @@
 accept_socket(int fd, short what, void *arg)
 {
 	struct evhttp *http = arg;
+#ifndef _MSC_VER
 	struct sockaddr_storage ss;
+#else
+    // MSVC doesn't have sockaddr_storage
+	struct sockaddr ss;
+#endif
 	socklen_t addrlen = sizeof(ss);
 	int nfd;
 
diff -ur libevent-1.4.3-stable/log.c libevent-1.4.3-stable-win32/log.c
--- libevent-1.4.3-stable/log.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/log.c	Wed Apr 23 17:31:02 2008
@@ -43,6 +43,7 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
 #include "misc.h"
diff -ur libevent-1.4.3-stable/sample/event-test.c libevent-1.4.3-stable-win32/sample/event-test.c
--- libevent-1.4.3-stable/sample/event-test.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/sample/event-test.c	Wed Apr 23 17:31:02 2008
@@ -14,6 +14,7 @@
 #include <unistd.h>
 #include <sys/time.h>
 #else
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 #include <fcntl.h>
diff -ur libevent-1.4.3-stable/sample/signal-test.c libevent-1.4.3-stable-win32/sample/signal-test.c
--- libevent-1.4.3-stable/sample/signal-test.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/sample/signal-test.c	Wed Apr 23 17:31:02 2008
@@ -15,6 +15,7 @@
 #include <unistd.h>
 #include <sys/time.h>
 #else
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 #include <signal.h>
@@ -33,7 +34,7 @@
 {
 	struct event *signal = arg;
 
-	printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal));
+	printf("%s: got signal %d\n", "signal_cb", EVENT_SIGNAL(signal));
 
 	if (called >= 2)
 		event_del(signal);
diff -ur libevent-1.4.3-stable/sample/time-test.c libevent-1.4.3-stable-win32/sample/time-test.c
--- libevent-1.4.3-stable/sample/time-test.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/sample/time-test.c	Wed Apr 23 17:31:02 2008
@@ -36,7 +36,7 @@
 	struct event *timeout = arg;
 	int newtime = time(NULL);
 
-	printf("%s: called at %d: %d\n", __func__, newtime,
+	printf("%s: called at %d: %d\n", "timeout_cb", newtime,
 	    newtime - lasttime);
 	lasttime = newtime;
 
@@ -51,7 +51,7 @@
 	struct event timeout;
 	struct timeval tv;
  
-	/* Initalize the event library */
+	/* Initialize the event library */
 	event_init();
 
 	/* Initalize one event */
diff -ur libevent-1.4.3-stable/select.c libevent-1.4.3-stable-win32/select.c
--- libevent-1.4.3-stable/select.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/select.c	Wed Apr 23 17:31:02 2008
@@ -30,6 +30,12 @@
 #include "config.h"
 #endif
 
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <winsock2.h>
+#include <windows.h>
+#endif // _WIN32
+
 #include <sys/types.h>
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
@@ -44,7 +50,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#ifndef _MSC_VER // MSVC doesn't have this
 #include <unistd.h>
+#endif
 #include <errno.h>
 #ifdef CHECK_INVARIANTS
 #include <assert.h>
diff -ur libevent-1.4.3-stable/signal.c libevent-1.4.3-stable-win32/signal.c
--- libevent-1.4.3-stable/signal.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/signal.c	Wed Apr 23 17:31:02 2008
@@ -32,8 +32,8 @@
 
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
-#include <winsock2.h>
 #undef WIN32_LEAN_AND_MEAN
 #endif
 #include <sys/types.h>
diff -ur libevent-1.4.3-stable/test/bench.c libevent-1.4.3-stable-win32/test/bench.c
--- libevent-1.4.3-stable/test/bench.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/test/bench.c	Wed Apr 23 17:31:02 2008
@@ -41,6 +41,7 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #ifdef WIN32
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #else
 #include <sys/socket.h>
diff -ur libevent-1.4.3-stable/test/regress.c libevent-1.4.3-stable-win32/test/regress.c
--- libevent-1.4.3-stable/test/regress.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/test/regress.c	Wed Apr 23 17:31:02 2008
@@ -26,7 +26,7 @@
  */
 
 #ifdef WIN32
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 
diff -ur libevent-1.4.3-stable/test/regress_dns.c libevent-1.4.3-stable-win32/test/regress_dns.c
--- libevent-1.4.3-stable/test/regress_dns.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/test/regress_dns.c	Wed Apr 23 17:31:02 2008
@@ -26,7 +26,7 @@
  */
 
 #ifdef WIN32
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 
diff -ur libevent-1.4.3-stable/test/regress_http.c libevent-1.4.3-stable-win32/test/regress_http.c
--- libevent-1.4.3-stable/test/regress_http.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/test/regress_http.c	Wed Apr 23 17:31:02 2008
@@ -26,7 +26,7 @@
  */
 
 #ifdef WIN32
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 
diff -ur libevent-1.4.3-stable/test/regress_rpc.c libevent-1.4.3-stable-win32/test/regress_rpc.c
--- libevent-1.4.3-stable/test/regress_rpc.c	Wed Apr 23 17:31:15 2008
+++ libevent-1.4.3-stable-win32/test/regress_rpc.c	Wed Apr 23 17:31:02 2008
@@ -26,7 +26,7 @@
  */
 
 #ifdef WIN32
-#include <winsock2.h>
+#include <winsock2.h> // winsock2.h must be before windows.h to have any effect
 #include <windows.h>
 #endif
 
@@ -450,14 +450,14 @@
 	need_input_hook = 1;
 	need_output_hook = 1;
 
-	assert(evrpc_add_hook(base, INPUT, rpc_hook_add_header, (void*)"input")
+	assert(evrpc_add_hook(base, EVRPC_INPUT, rpc_hook_add_header, (void*)"input")
 	    != NULL);
-	assert(evrpc_add_hook(base, OUTPUT, rpc_hook_add_header, (void*)"output")
+	assert(evrpc_add_hook(base, EVRPC_OUTPUT, rpc_hook_add_header, (void*)"output")
 	    != NULL);
 
 	pool = rpc_pool_with_connection(port);
 
-	assert(evrpc_add_hook(pool, INPUT, rpc_hook_remove_header, (void*)"output"));
+	assert(evrpc_add_hook(pool, EVRPC_INPUT, rpc_hook_remove_header, (void*)"output"));
 
 	/* set up the basic message */
 	msg = msg_new();


More information about the Libevent-users mailing list