| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 | === 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;
 |