Commit 6d8f2885 authored by Nick Mathewson's avatar Nick Mathewson 🐚
Browse files

Remove the completely outdated Win32Build directory

If you want to try to build Tor with a recent MSVC, you are better
off starting from scratch than trying to use the project files that
we used to build 2006 versions of Tor using 2006 versions of MSVC.
parent a467bf5f
Loading
Loading
Loading
Loading

Win32Build/mingw/CHANGES-libevent

deleted100644 → 0
+0 −80
Original line number Diff line number Diff line
Changes related to compilation under MinGW/any sane win32 gcc
=============================================================

* event.c
- If gcc include "WIN32-Code/misc.h" instead of "misc.h"

* WIN32-Code/misc.h
- Add struct prototypes for timeval and timezone

* buffer.c
- changed type of "i" from "u_int" to "unsigned int". My MinGW wasn't 
  recognizing it. (u_int is normally typedef'ed to unsigned int, right?)

* evbuffer.c
- removed incorrect win32 error checking, see bufferevent_writecb().
  (this needs to be fixed by anyone planning to use evbuffer on win32)

* log.c
- If gcc include "WIN32-Code/misc.h" instead of "misc.h" 

* WIN32-Code/misc.c
- if gcc, include "misc.h"
- added newline at end of file to shut up gcc

* WIN32-Code/win32.c
- Altered the prototypes of win32_*() so their argument types didn't conflict
  with the function definitions.
- Casted types of win32_* to void inside win32ops so that it didn't conflict
  with the definition of eventops (gcc doesn't like this)
- Altered prototype of signal_handler to be static since definition is static
  (why wasn't it like this before)
- Casted the second argument of signal() to be void*, some reason my MinGW 
  doesn't have sighandler_t typedef'ed.

* configure.in
- some code to check if we are compiling for WIN32. 
  
* Makefile.am
- if BUILD_WIN32 is defined, include WIN32-Code/misc.c and
  WIN32-Code/win32.c as source files.
- if WIN32, do not build test stuff. (not windows friendly)
- if WIN32, explicitly link to ws2_32.dll
  
Notes
-----
- We assume that if __GNUC__ is undefined we are building with MSVC
- If the user wishes to build a dll, they are on their own, the syntax is 
  compiler specific. 
- Getting this warning from libtool, no idea why
  "libtool: link: warning: undefined symbols not allowed in i686-pc-mingw32
   shared libraries"

  
Changes related to "custom eventops"
====================================

* configure.in
- add argument --enable-custom-eventops, sets USE_CUSTOM_EVENTOPS in config.h
- add argument --enable-custom-code, sets USE_CUSTOM_CODE in Makefile

* Makefile.am
- if USE_CUSTOM_CODE, include custom/custom.c as a source file.
  (I can't think of a way to pass a string to Makefile.am, so I'm stuck naming
   the new source file custom.c. It just seems simpler this way, but I'm open 
   to suggestions)
   
* event.c
- if USE_CUSTOM_EVENTOPS, use eventops as defined in custom-eventops.h

Notes
-----
Just in case it isn't completely obvious, the goal of "custom eventops" is to
allow the user to include their own event processing system without requiring a 
fork. This is accomplished through two parts. Firstly, by allowing the user to 
redefine eventops. (for example, the user may wish to use epoll() exclusively). 
Secondly, by allowing the user to include their own code to support a private
eventop (note, this may not be necessary, as the user may choose to include 
already defined eventop's. 

Win32Build/mingw/README

deleted100644 → 0
+0 −8
Original line number Diff line number Diff line
The current SVN version of Tor should compile with MinGW.

OpenSSL and libz both compile on MinGW out of the box.

libevent 1.1b will not build unless you apply the diff in this directory.


+0 −338
Original line number Diff line number Diff line
Only in libevent-1.1b: CHANGES
Only in libevent-1.1b: Makefile
diff -uwr libevent-1.1b-old/Makefile.am libevent-1.1b/Makefile.am
--- libevent-1.1b-old/Makefile.am	Wed Aug  9 22:16:35 2006
+++ libevent-1.1b/Makefile.am	Sat Sep  2 03:49:26 2006
@@ -1,6 +1,5 @@
 AUTOMAKE_OPTIONS = foreign no-dependencies
 
-SUBDIRS = . sample test
 
 EXTRA_DIST = acconfig.h event.h event-internal.h log.h evsignal.h event.3 \
 	kqueue.c epoll_sub.c epoll.c select.c rtsig.c poll.c signal.c \
@@ -20,8 +19,29 @@
 
 lib_LTLIBRARIES = libevent.la
 
-libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c
-libevent_la_LIBADD = @LTLIBOBJS@
+
+if BUILD_WIN32
+
+SUBDIRS = . sample
+SYS_LIBS = -lws2_32
+SYS_SRC = WIN32-Code/misc.c WIN32-Code/win32.c 
+
+else
+
+SUBDIRS = . sample test
+SYS_LIBS = 
+SYS_SRC = 
+
+endif
+
+if USE_CUSTOM_CODE
+CUST_SRC = custom/custom.c
+else
+CUST_SRC = 
+endif
+
+libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c $(CUST_SRC) $(SYS_SRC)
+libevent_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
 libevent_la_LDFLAGS = -release @VERSION@ -version-info 1:2:0
 
 include_HEADERS = event.h
Only in libevent-1.1b: Makefile.in
diff -uwr libevent-1.1b-old/WIN32-Code/misc.c libevent-1.1b/WIN32-Code/misc.c
--- libevent-1.1b-old/WIN32-Code/misc.c	Wed Aug  9 21:01:14 2006
+++ libevent-1.1b/WIN32-Code/misc.c	Fri Sep  1 22:21:31 2006
@@ -4,6 +4,12 @@
 #include <sys/timeb.h>
 #include <time.h>
 
+#ifdef __GNUC__
+/*our prototypes for timeval and timezone are in here, just in case the above
+  headers don't have them*/
+#include "misc.h"
+#endif
+
 /****************************************************************************
  *
  * Function: gettimeofday(struct timeval *, struct timezone *)
diff -uwr libevent-1.1b-old/WIN32-Code/misc.h libevent-1.1b/WIN32-Code/misc.h
--- libevent-1.1b-old/WIN32-Code/misc.h	Wed Aug  9 21:01:14 2006
+++ libevent-1.1b/WIN32-Code/misc.h	Fri Sep  1 18:47:09 2006
@@ -1,6 +1,9 @@
 #ifndef MISC_H
 #define MISC_H
 
+struct timezone;
+struct timeval;
+
 int gettimeofday(struct timeval *,struct timezone *);
 
 #endif
diff -uwr libevent-1.1b-old/WIN32-Code/win32.c libevent-1.1b/WIN32-Code/win32.c
--- libevent-1.1b-old/WIN32-Code/win32.c	Wed Aug  9 21:25:48 2006
+++ libevent-1.1b/WIN32-Code/win32.c	Sat Sep  2 00:45:55 2006
@@ -60,7 +60,8 @@
 /* MSDN says this is required to handle SIGFPE */
 volatile double SIGFPE_REQ = 0.0f;
 
-int signal_handler(int sig);
+static int signal_handler(int sig);
+
 void signal_process(void);
 int signal_recalc(void);
 
@@ -77,20 +78,21 @@
 };
 
 void *win32_init	(void);
-int win32_insert	(void *, struct event *);
-int win32_del	(void *, struct event *);
+int win32_insert	(struct win32op *, struct event *);
+int win32_del		(struct win32op *, struct event *);
 int win32_recalc	(struct event_base *base, void *, int);
-int win32_dispatch	(struct event_base *base, void *, struct timeval *);
+int win32_dispatch	(struct event_base *base, struct win32op *, struct timeval *);
 
 struct eventop win32ops = {
 	"win32",
 	win32_init,
-	win32_insert,
-	win32_del,
+	(int (*) (void*, struct event*)) win32_insert,
+	(int (*) (void*, struct event*)) win32_del,
 	win32_recalc,
-	win32_dispatch
+	(int (*) (struct event_base*, void*, struct timeval*)) win32_dispatch
 };
 
+
 #define FD_SET_ALLOC_SIZE(n) ((sizeof(struct win_fd_set) + ((n)-1)*sizeof(SOCKET)))
 
 static int
@@ -213,7 +215,13 @@
 		if (ev->ev_events & (EV_READ|EV_WRITE))
 			event_errx(1, "%s: EV_SIGNAL incompatible use",
 			           __func__);
+
+#ifndef __GNUC__
 		if((int)signal(EVENT_SIGNAL(ev), signal_handler) == -1)
+#else
+		if((int)signal(EVENT_SIGNAL(ev), (void*) signal_handler) == -1)
+#endif
+
 			return (-1);
 
 		return (0);
@@ -382,8 +390,13 @@
 
 	/* Reinstall our signal handler. */
 	TAILQ_FOREACH(ev, &signalqueue, ev_signal_next) {
+#ifndef __GNUC__
 		if((int)signal(EVENT_SIGNAL(ev), signal_handler) == -1)
+#else
+		if((int)signal(EVENT_SIGNAL(ev), (void*) signal_handler) == -1)
+#endif
 			return (-1);
+
 	}
 	return (0);
 }
Only in libevent-1.1b-old/: aclocal.m4
Only in libevent-1.1b: autom4te.cache
diff -uwr libevent-1.1b-old/buffer.c libevent-1.1b/buffer.c
--- libevent-1.1b-old/buffer.c	Wed Aug  9 22:01:40 2006
+++ libevent-1.1b/buffer.c	Fri Sep  1 18:52:56 2006
@@ -197,7 +197,7 @@
 	u_char *data = EVBUFFER_DATA(buffer);
 	size_t len = EVBUFFER_LENGTH(buffer);
 	char *line;
-	u_int i;
+	unsigned int i;
 
 	for (i = 0; i < len; i++) {
 		if (data[i] == '\r' || data[i] == '\n')
Only in libevent-1.1b: config.guess
Only in libevent-1.1b: config.h
diff -uwr libevent-1.1b-old/config.h.in libevent-1.1b/config.h.in
--- libevent-1.1b-old/config.h.in	Wed Aug  9 21:27:37 2006
+++ libevent-1.1b/config.h.in	Sat Sep  2 02:23:17 2006
@@ -223,6 +223,9 @@
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 #undef TIME_WITH_SYS_TIME
 
+/* Define to 1 if you want to use a custom eventops variable */
+#undef USE_CUSTOM_EVENTOPS
+
 /* Version number of package */
 #undef VERSION
 
@@ -232,11 +235,9 @@
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
+/* Define as `__inline' if that's what the C compiler calls it, or to nothing
+   if it is not supported. */
 #undef inline
-#endif
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
Only in libevent-1.1b: config.h.in~
Only in libevent-1.1b: config.log
Only in libevent-1.1b: config.status
Only in libevent-1.1b: configure
diff -uwr libevent-1.1b-old/configure.in libevent-1.1b/configure.in
--- libevent-1.1b-old/configure.in	Wed Aug  9 22:05:17 2006
+++ libevent-1.1b/configure.in	Sat Sep  2 03:40:15 2006
@@ -21,6 +21,18 @@
         CFLAGS="$CFLAGS -Wall"
 fi
 
+AC_ARG_ENABLE(custom-eventops,
+		[  --enable-custom-eventops   Use custom eventops variable],
+		AC_DEFINE([USE_CUSTOM_EVENTOPS],[1],
+					[Define to 1 to use a custom eventops variable])
+		,)
+AC_ARG_ENABLE(custom-code,
+		[  --enable-custom-code       Use custom code from custom/],
+		customcodev=true,
+		customcodev=false)
+
+AM_CONDITIONAL(USE_CUSTOM_CODE, test x$customcodev = xtrue)
+
 AC_PROG_LIBTOOL
 
 dnl   Uncomment "AC_DISABLE_SHARED" to make shared librraries not get
@@ -110,6 +122,22 @@
 	  AC_MSG_RESULT(yes)] ,AC_MSG_RESULT(no)
 )
 fi
+
+dnl - check if the macro WIN32 is defined on this compiler.
+dnl - (this is how we check for a windows version of GCC)
+AC_MSG_CHECKING(for WIN32)
+AC_TRY_COMPILE(,
+	[
+	#ifndef WIN32
+	#error
+	#endif
+	],
+	bwin32=true; AC_MSG_RESULT(yes),
+	bwin32=false; AC_MSG_RESULT(no),
+)
+
+AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
+
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
diff -uwr libevent-1.1b-old/evbuffer.c libevent-1.1b/evbuffer.c
--- libevent-1.1b-old/evbuffer.c	Wed Aug  9 21:01:14 2006
+++ libevent-1.1b/evbuffer.c	Fri Sep  1 19:18:13 2006
@@ -154,12 +154,20 @@
 	if (EVBUFFER_LENGTH(bufev->output)) {
 	    res = evbuffer_write(bufev->output, fd);
 	    if (res == -1) {
+#ifndef WIN32
+/*todo. evbuffer uses WriteFile when WIN32 is set. WIN32 system calls do not
+ *set errno. thus this error checking is not portable*/
 		    if (errno == EAGAIN ||
 			errno == EINTR ||
 			errno == EINPROGRESS)
 			    goto reschedule;
 		    /* error case */
 		    what |= EVBUFFER_ERROR;
+
+#else
+				goto reschedule;
+#endif
+
 	    } else if (res == 0) {
 		    /* eof case */
 		    what |= EVBUFFER_EOF;
@@ -181,6 +189,7 @@
 	return;
 
  reschedule:
+
 	if (EVBUFFER_LENGTH(bufev->output) != 0)
 		bufferevent_add(&bufev->ev_write, bufev->timeout_write);
 	return;
diff -uwr libevent-1.1b-old/event.c libevent-1.1b/event.c
--- libevent-1.1b-old/event.c	Wed Aug  9 21:25:48 2006
+++ libevent-1.1b/event.c	Sat Sep  2 04:22:05 2006
@@ -30,8 +30,14 @@
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
+
+#ifdef __GNUC__
+#include "WIN32-Code/misc.h"
+#else
 #include "misc.h"
 #endif
+
+#endif
 #include <sys/types.h>
 #include <sys/tree.h>
 #ifdef HAVE_SYS_TIME_H
@@ -53,6 +59,7 @@
 #include "event-internal.h"
 #include "log.h"
 
+
 #ifdef HAVE_SELECT
 extern const struct eventop selectops;
 #endif
@@ -75,6 +82,8 @@
 extern const struct eventop win32ops;
 #endif
 
+#ifndef USE_CUSTOM_EVENTOPS
+
 /* In order of preference */
 const struct eventop *eventops[] = {
 #ifdef HAVE_WORKING_KQUEUE
@@ -101,6 +110,11 @@
 	NULL
 };
 
+#else
+#include "custom-eventops.h"
+#endif //USE_CUSTOM_EVENTOPS
+
+
 /* Global state */
 struct event_list signalqueue;
 
Only in libevent-1.1b: libtool
diff -uwr libevent-1.1b-old/log.c libevent-1.1b/log.c
--- libevent-1.1b-old/log.c	Wed Aug  9 21:01:14 2006
+++ libevent-1.1b/log.c	Fri Sep  1 19:09:45 2006
@@ -45,8 +45,14 @@
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
 #undef WIN32_LEAN_AND_MEAN
+
+#ifdef __GNUC__
+#include "WIN32-Code/misc.h"
+#else
 #include "misc.h"
 #endif
+
+#endif
 #include <sys/types.h>
 #include <sys/tree.h>
 #ifdef HAVE_SYS_TIME_H
Only in libevent-1.1b/sample: Makefile
Only in libevent-1.1b/sample: Makefile.in
Only in libevent-1.1b: stamp-h1
Only in libevent-1.1b/test: Makefile
Only in libevent-1.1b/test: Makefile.in
+0 −221
Original line number Diff line number Diff line
=== Makefile.am
==================================================================
--- Makefile.am	(revision 8794)
+++ Makefile.am	(local)
@@ -1,6 +1,5 @@
 AUTOMAKE_OPTIONS = foreign no-dependencies
 
-SUBDIRS = . sample test
 
 EXTRA_DIST = acconfig.h event.h event-internal.h log.h evsignal.h event.3 \
 	kqueue.c epoll_sub.c epoll.c select.c rtsig.c poll.c signal.c \
@@ -20,13 +19,29 @@
 
 lib_LTLIBRARIES = libevent.la
 
-libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c
-libevent_la_LIBADD = @LTLIBOBJS@
+if BUILD_WIN32
+
+SUBDIRS = . sample
+SYS_LIBS = -lws2_32
+SYS_SRC = WIN32-Code/misc.c WIN32-Code/win32.c
+SYS_INCLUDES = -IWIN32-Code
+
+else
+
+SUBDIRS = . sample test
+SYS_LIBS =
+SYS_SRC =
+SYS_INCLUDES =
+
+endif
+
+libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c $(SYS_SRC)
+libevent_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
 libevent_la_LDFLAGS = -release @VERSION@ -version-info 1:2:0
 
 include_HEADERS = event.h
 
-INCLUDES = -Icompat
+INCLUDES = -Icompat $(SYS_INCLUDES)
 
 man_MANS = event.3
 
=== WIN32-Code/misc.c
==================================================================
--- WIN32-Code/misc.c	(revision 8794)
+++ WIN32-Code/misc.c	(local)
@@ -4,6 +4,12 @@
 #include <sys/timeb.h>
 #include <time.h>
 
+#ifdef __GNUC__
+/*our prototypes for timeval and timezone are in here, just in case the above
+  headers don't have them*/
+#include "misc.h"
+#endif
+
 /****************************************************************************
  *
  * Function: gettimeofday(struct timeval *, struct timezone *)
@@ -17,6 +23,7 @@
  *
  ****************************************************************************/
 
+#ifndef HAVE_GETTIMEOFDAY
 int gettimeofday(struct timeval *tv, struct timezone *tz) {
   struct _timeb tb;
 
@@ -28,6 +35,7 @@
 	tv->tv_usec = ((int) tb.millitm) * 1000;
 	return 0;
 }
+#endif
 
 int
 win_read(int fd, void *buf, unsigned int length)
=== WIN32-Code/misc.h
==================================================================
--- WIN32-Code/misc.h	(revision 8794)
+++ WIN32-Code/misc.h	(local)
@@ -1,6 +1,11 @@
 #ifndef MISC_H
 #define MISC_H
 
+struct timezone;
+struct timeval;
+
+#ifndef HAVE_GETTIMEOFDAY
 int gettimeofday(struct timeval *,struct timezone *);
+#endif
 
 #endif
=== WIN32-Code/win32.c
==================================================================
--- WIN32-Code/win32.c	(revision 8794)
+++ WIN32-Code/win32.c	(local)
@@ -60,7 +60,8 @@
 /* MSDN says this is required to handle SIGFPE */
 volatile double SIGFPE_REQ = 0.0f;
 
-int signal_handler(int sig);
+static void signal_handler(int sig);
+
 void signal_process(void);
 int signal_recalc(void);
 
@@ -205,8 +206,9 @@
 }
 
 int
-win32_insert(struct win32op *win32op, struct event *ev)
+win32_insert(void *op, struct event *ev)
 {
+	struct win32op *win32op = op;
 	int i;
 
 	if (ev->ev_events & EV_SIGNAL) {
@@ -251,8 +253,9 @@
 }
 
 int
-win32_del(struct win32op *win32op, struct event *ev)
+win32_del(void *op, struct event *ev)
 {
+	struct win32op *win32op = op;
 	int i, found;
 
 	if (ev->ev_events & EV_SIGNAL)
@@ -302,9 +305,10 @@
 */
 
 int
-win32_dispatch(struct event_base *base, struct win32op *win32op,
+win32_dispatch(struct event_base *base, void *op,
 	       struct timeval *tv)
 {
+	struct win32op *win32op = op;
 	int res = 0;
 	int i;
 	int fd_count;
@@ -366,13 +370,11 @@
 }
 
 
-static int
+static void
 signal_handler(int sig)
 {
 	evsigcaught[sig]++;
 	signal_caught = 1;
-
-	return 0;
 }
 
 int
=== buffer.c
==================================================================
--- buffer.c	(revision 8794)
+++ buffer.c	(local)
@@ -197,7 +197,7 @@
 	u_char *data = EVBUFFER_DATA(buffer);
 	size_t len = EVBUFFER_LENGTH(buffer);
 	char *line;
-	u_int i;
+	unsigned int i;
 
 	for (i = 0; i < len; i++) {
 		if (data[i] == '\r' || data[i] == '\n')
=== configure.in
==================================================================
--- configure.in	(revision 8794)
+++ configure.in	(local)
@@ -111,6 +111,21 @@
 )
 fi
 
+dnl - check if the macro WIN32 is defined on this compiler.
+dnl - (this is how we check for a windows version of GCC)
+AC_MSG_CHECKING(for WIN32)
+AC_TRY_COMPILE(,
+	[
+	#ifndef WIN32
+	#error
+	#endif
+	],
+	bwin32=true; AC_MSG_RESULT(yes),
+	bwin32=false; AC_MSG_RESULT(no),
+)
+
+AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
+
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
=== evbuffer.c
==================================================================
--- evbuffer.c	(revision 8794)
+++ evbuffer.c	(local)
@@ -154,12 +154,20 @@
 	if (EVBUFFER_LENGTH(bufev->output)) {
 	    res = evbuffer_write(bufev->output, fd);
 	    if (res == -1) {
+#ifndef WIN32
+/*todo. evbuffer uses WriteFile when WIN32 is set. WIN32 system calls do not
+ *set errno. thus this error checking is not portable*/
 		    if (errno == EAGAIN ||
 			errno == EINTR ||
 			errno == EINPROGRESS)
 			    goto reschedule;
 		    /* error case */
 		    what |= EVBUFFER_ERROR;
+
+#else
+				goto reschedule;
+#endif
+
 	    } else if (res == 0) {
 		    /* eof case */
 		    what |= EVBUFFER_EOF;
+0 −210
Original line number Diff line number Diff line
=== Makefile.am
==================================================================
--- Makefile.am	(revision 8794)
+++ Makefile.am	(local)
@@ -1,6 +1,5 @@
 AUTOMAKE_OPTIONS = foreign no-dependencies
 
-SUBDIRS = . sample test
 
 bin_SCRIPTS = event_rpcgen.py
 
@@ -22,18 +21,34 @@
 
 lib_LTLIBRARIES = libevent.la
 
+if BUILD_WIN32
+
+SUBDIRS = . sample
+SYS_LIBS = -lws2_32
+SYS_SRC = WIN32-Code/misc.c WIN32-Code/win32.c
+SYS_INCLUDES = -IWIN32-Code
+
+else
+
+SUBDIRS = . sample test
+SYS_LIBS =
+SYS_SRC =
+SYS_INCLUDES =
+
+endif
+
 libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c event_tagging.c \
-	 http.c evhttp.h http-internal.h evdns.c evdns.h
-libevent_la_LIBADD = @LTLIBOBJS@
+	 http.c evhttp.h http-internal.h evdns.c evdns.h $(SYS_SRC)
+libevent_la_LIBADD = @LTLIBOBJS@ $(SYS_LIBS)
 libevent_la_LDFLAGS = -release @VERSION@ -version-info 1:3:0
 
 include_HEADERS = event.h evhttp.h evdns.h
 
-INCLUDES = -Icompat
+INCLUDES = -Icompat $(SYS_INCLUDES)
 
 man_MANS = event.3
 
 verify: libevent.la
-	cd $(srcdir)/test && make verify	
+	cd $(srcdir)/test && make verify
 
 DISTCLEANFILES = *~
=== WIN32-Code/misc.c
==================================================================
--- WIN32-Code/misc.c	(revision 8794)
+++ WIN32-Code/misc.c	(local)
@@ -4,6 +4,12 @@
 #include <sys/timeb.h>
 #include <time.h>
 
+#ifdef __GNUC__
+/*our prototypes for timeval and timezone are in here, just in case the above
+  headers don't have them*/
+#include "misc.h"
+#endif
+
 /****************************************************************************
  *
  * Function: gettimeofday(struct timeval *, struct timezone *)
=== WIN32-Code/misc.h
==================================================================
--- WIN32-Code/misc.h	(revision 8794)
+++ WIN32-Code/misc.h	(local)
@@ -1,6 +1,9 @@
 #ifndef MISC_H
 #define MISC_H
 
+struct timezone;
+struct timeval;
+
 int gettimeofday(struct timeval *,struct timezone *);
 
 #endif
=== WIN32-Code/win32.c
==================================================================
--- WIN32-Code/win32.c	(revision 8794)
+++ WIN32-Code/win32.c	(local)
@@ -60,7 +60,8 @@
 /* MSDN says this is required to handle SIGFPE */
 volatile double SIGFPE_REQ = 0.0f;
 
-int signal_handler(int sig);
+static void signal_handler(int sig);
+
 void signal_process(void);
 int signal_recalc(void);
 
@@ -207,8 +208,9 @@
 }
 
 int
-win32_insert(struct win32op *win32op, struct event *ev)
+win32_insert(void *op, struct event *ev)
 {
+	struct win32op *win32op = op;
 	int i;
 
 	if (ev->ev_events & EV_SIGNAL) {
@@ -253,8 +255,9 @@
 }
 
 int
-win32_del(struct win32op *win32op, struct event *ev)
+win32_del(void *op, struct event *ev)
 {
+	struct win32op *win32op = op;
 	int i, found;
 
 	if (ev->ev_events & EV_SIGNAL)
@@ -304,9 +307,10 @@
 */
 
 int
-win32_dispatch(struct event_base *base, struct win32op *win32op,
+win32_dispatch(struct event_base *base, void *op,
 	       struct timeval *tv)
 {
+	struct win32op *win32op = op;
 	int res = 0;
 	int i;
 	int fd_count;
@@ -389,13 +393,11 @@
 	free(win32op);
 }
 
-static int
+static void
 signal_handler(int sig)
 {
 	evsigcaught[sig]++;
 	signal_caught = 1;
-
-	return 0;
 }
 
 int
=== buffer.c
==================================================================
--- buffer.c	(revision 8794)
+++ buffer.c	(local)
@@ -197,7 +197,7 @@
 	u_char *data = EVBUFFER_DATA(buffer);
 	size_t len = EVBUFFER_LENGTH(buffer);
 	char *line;
-	u_int i;
+	unsigned int i;
 
 	for (i = 0; i < len; i++) {
 		if (data[i] == '\r' || data[i] == '\n')
=== configure.in
==================================================================
--- configure.in	(revision 8794)
+++ configure.in	(local)
@@ -111,6 +111,22 @@
 )
 fi
 
+dnl - check if the macro WIN32 is defined on this compiler.
+dnl - (this is how we check for a windows version of GCC)
+AC_MSG_CHECKING(for WIN32)
+AC_TRY_COMPILE(,
+	[
+	#ifndef WIN32
+	#error
+	#endif
+	],
+	bwin32=true; AC_MSG_RESULT(yes),
+	bwin32=false; AC_MSG_RESULT(no),
+)
+
+AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
+
+
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
=== evbuffer.c
==================================================================
--- evbuffer.c	(revision 8794)
+++ evbuffer.c	(local)
@@ -163,12 +162,20 @@
 	if (EVBUFFER_LENGTH(bufev->output)) {
 	    res = evbuffer_write(bufev->output, fd);
 	    if (res == -1) {
+#ifndef WIN32
+/*todo. evbuffer uses WriteFile when WIN32 is set. WIN32 system calls do not
+ *set errno. thus this error checking is not portable*/
 		    if (errno == EAGAIN ||
 			errno == EINTR ||
 			errno == EINPROGRESS)
 			    goto reschedule;
 		    /* error case */
 		    what |= EVBUFFER_ERROR;
+
+#else
+				goto reschedule;
+#endif
+
 	    } else if (res == 0) {
 		    /* eof case */
 		    what |= EVBUFFER_EOF;
Loading