diff --git a/ChangeLog b/ChangeLog index f08d14f19c..ef7d34e6b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Thu Feb 10 13:52:42 2005 NAKAMURA Usaku + + * configure.in, win32/Makefile.sub (LIBS, COMMON_HEADERS): use + winsock2 on mswin32/mingw. + + * ext/socket/extconf.rb: ditto. + + * win32/win32.c (StartSockets): ditto. + + * win32/win32.h: ditto. + Thu Feb 10 12:09:16 2005 Nobuyoshi Nakada * ext/extmk.rb (extract_makefile): default to true if not compiled diff --git a/configure.in b/configure.in index ee5954c86a..1f1f611ebc 100644 --- a/configure.in +++ b/configure.in @@ -286,7 +286,7 @@ cygwin*) rb_cv_have_daylight=no ac_cv_func__setjmp=no ac_cv_func_setitimer=no ;; -mingw*) LIBS="-lshell32 -lwsock32 $LIBS" +mingw*) LIBS="-lshell32 -lws2_32 $LIBS" ac_cv_header_a_out_h=no ac_cv_header_pwd_h=no ac_cv_header_utime_h=no @@ -1299,7 +1299,7 @@ case "$target_os" in AC_LIBOBJ([win32]) COMMON_LIBS=m COMMON_MACROS="WIN32_LEAN_AND_MEAN=" - COMMON_HEADERS="windows.h winsock.h" + COMMON_HEADERS="winsock2.h windows.h" ;; esac XCFLAGS="$XCFLAGS" diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index 076f8bf7d7..5e439401ce 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -1,14 +1,10 @@ require 'mkmf' case RUBY_PLATFORM -when /bccwin32/ +when /(ms|bcc)win32|mingw/ test_func = "WSACleanup" have_library("ws2_32", "WSACleanup") have_func("closesocket") -when /mswin32|mingw/ - test_func = "WSACleanup" - have_library("wsock32", "WSACleanup") - have_func("closesocket") when /cygwin/ test_func = "socket" when /beos/ @@ -108,8 +104,7 @@ end # doug's fix, NOW add -Dss_family... only if required! doug = proc {have_struct_member("struct sockaddr_storage", "ss_family", headers)} -if /mswin32|mingw/ !~ RUBY_PLATFORM and - (doug[] or +if (doug[] or with_cppflags($CPPFLAGS + " -Dss_family=__ss_family -Dss_len=__ss_len", &doug)) $defs[-1] = "-DHAVE_SOCKADDR_STORAGE" end diff --git a/win32/Makefile.sub b/win32/Makefile.sub index b45d9bc339..95007145e1 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -126,7 +126,7 @@ RFLAGS = -r !if !defined(EXTLIBS) EXTLIBS = !endif -LIBS = oldnames.lib user32.lib advapi32.lib shell32.lib wsock32.lib $(EXTLIBS) +LIBS = oldnames.lib user32.lib advapi32.lib shell32.lib ws2_32.lib $(EXTLIBS) MISSING = acosh.obj crypt.obj erf.obj win32.obj ARFLAGS = -machine:$(MACHINE) -out: diff --git a/win32/win32.c b/win32/win32.c index 166d58e792..ea379c754a 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -1972,21 +1972,17 @@ StartSockets(void) { WORD version; WSADATA retdata; - int ret; int iSockOpt; // // initalize the winsock interface and insure that it's // cleaned up at exit. // - version = MAKEWORD(1, 1); - if (ret = WSAStartup(version, &retdata)) + version = MAKEWORD(2, 0); + if (WSAStartup(version, &retdata)) rb_fatal ("Unable to locate winsock library!\n"); - if (LOBYTE(retdata.wVersion) != 1) - rb_fatal("could not find version 1 of winsock dll\n"); - - if (HIBYTE(retdata.wVersion) != 1) - rb_fatal("could not find version 1 of winsock dll\n"); + if (LOBYTE(retdata.wVersion) != 2) + rb_fatal("could not find version 2 of winsock dll\n"); atexit((void (*)(void)) WSACleanup); @@ -3658,7 +3654,7 @@ rb_w32_fopen(const char *path, const char *mode) } FILE * -rb_w32_fdopen(int handle, char *type) +rb_w32_fdopen(int handle, const char *type) { FILE *f = (errno = 0, _fdopen(handle, type)); if (f == NULL && errno == 0) { diff --git a/win32/win32.h b/win32/win32.h index 58538b26ee..25e949a7a9 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -22,8 +22,8 @@ // There is function-name conflitct, so we rename it #if !defined(IN) && !defined(FLOAT) #define OpenFile WINAPI_OpenFile +#include #include -#include #undef OpenFile #endif