=== 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 #include +#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); @@ -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,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) @@ -154,12 +153,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;