From: nobuyoshi nakada Date: 2005-10-26T17:33:44+09:00 Subject: [ruby-dev:27532] [win32] replaced symbols なかだです。 以前からwin32/win32.hでの関数の置き換えが問題になることがありま したが、外部に対してはDLL内のaliasで置き換えるようにしてみまし た。 また、Daniel Bergerが[ruby-talk:162672]でいっているように、最新 のMicrosoftのfree compilerにはdumpbinが入っていないとすると、 [ruby-talk:162690]のような修正が必要になります。 Index: bcc32/Makefile.sub =================================================================== RCS file: /cvs/ruby/src/ruby/bcc32/Makefile.sub,v retrieving revision 1.84 diff -U2 -p -r1.84 Makefile.sub --- bcc32/Makefile.sub 25 Oct 2005 16:59:17 -0000 1.84 +++ bcc32/Makefile.sub 26 Oct 2005 00:40:38 -0000 @@ -432,5 +432,5 @@ $(LIBRUBY): $(LIBRUBY_SO) $(RUBYDEF): $(LIBRUBY_A) $(PREP) - $(MINIRUBY) $(srcdir)bcc32/mkexports.rb -output=$@ -base=$(RUBY_SO_NAME) $(LIBRUBY_A) + $(MINIRUBY) $(srcdir)win32/mkexports.rb -output=$@ -base=$(RUBY_SO_NAME) $(LIBRUBY_A) $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb Index: win32/mkexports.rb =================================================================== RCS file: /cvs/ruby/src/ruby/win32/mkexports.rb,v retrieving revision 1.4 diff -U2 -p -r1.4 mkexports.rb --- win32/mkexports.rb 18 Jun 2002 10:23:31 -0000 1.4 +++ win32/mkexports.rb 26 Oct 2005 08:31:04 -0000 @@ -3,14 +3,77 @@ SYM = {} -objs = ARGV.collect {|s| s.tr('/', '\\')} -IO.foreach("|dumpbin -symbols " + objs.join(' ')) do |l| - next if /^[0-9A-F]+ 0+ UNDEF / =~ l - next unless l.sub!(/.*\sExternal\s+\|\s+/, '') - if l.sub!(/^_/, '') - next if /@.*@/ =~ l || /@[0-9a-f]{16}$/ =~ l - elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1') - next +case RUBY_PLATFORM +when /mswin|mingw/ + if path = ENV["PATH"] + path = path.split(File::PATH_SEPARATOR) + else + path = %w[.] + end + dumpbin = "dumpbin.exe" + unless path.find {|dir| File.join(dir, dumpbin)} + dumpbin = "link.exe -dump" + end + + objs = ARGV.collect {|s| s.tr('/', '\\')} + filetype = nil + IO.foreach("|#{dumpbin} -symbols -exports " + objs.join(' ')) do |l| + if (filetype = l[/^File Type: (.+)/, 1])..(/^\f/ =~ l) + case filetype + when /OBJECT/, /LIBRARY/ + next if /^[0-9A-F]+ 0+ UNDEF / =~ l + next unless l.sub!(/.*\sExternal\s+\|\s+/, '') + if l.sub!(/^_/, '') + next if /@.*@/ =~ l || /@[0-9a-f]{16}$/ =~ l + l.sub!(/^/, '_') if /@\d+$/ =~ l + elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1') + next + end + when /DLL/ + next unless l.sub!(/^\s*\d+\s+[[:xdigit:]]+\s+[[:xdigit:]]+\s+/, '') + else + next + end + SYM[l.strip] = true + end + end + SYM["strcasecmp"] = "msvcrt.stricmp" + SYM["strncasecmp"] = "msvcrt.strnicmp" + prefix = nil +when /bccwin/ + STDIN.reopen(open("nul")) + ARGV.each do |obj| + opt = /\.(?:so|dll)\z/i =~ obj ? "-ee" : "-oiPUBDEF -oiPUBD32" + IO.foreach("|tdump -q #{opt} #{obj.tr('/', '\\')}") do |l| + next unless /(?:PUBDEF|PUBD32|EXPORT)/ =~ l + SYM[$1] = true if /'(.*?)'/ =~ l + end + end + SYM["_strcasecmp"] = "_stricmp" + SYM["_strncasecmp"] = "_strnicmp" + prefix = '_' +end + +WINAPIS = {} +SYM.each do |name, val| + if /^_?(rb_w32_\w+)@\d+$/ =~ name + WINAPIS[$1] = name + end +end + +$srcdir = File.dirname(File.dirname(__FILE__)) unless String === $srcdir +if File.exist?(win32_h = $srcdir+"/win32/win32.h") + IO.foreach(win32_h) do |line| + if /^#define (\w+)(.*?)\s+(?:\(void\))?(rb_w32_\w+)(.*?)\s*$/ =~ line and + $2.delete(" ") == $4.delete(" ") + export, internal = $1, $3 + if prefix + export = prefix + export + internal = prefix + internal + end + if SYM[internal] or internal = WINAPIS[internal] + SYM[export] = internal + end + end end - SYM[l.strip] = true end @@ -22,9 +85,9 @@ elsif $library end exports << "Description " + $description.dump if $description -exports << "EXPORTS" << SYM.keys.sort +exports << "EXPORTS" << SYM.sort.collect {|k, v| v == true ? k : "#{k}=#{v}"} if $output - open($output, 'w') {|f| f.puts exports.join("\n")} + open($output, 'w') {|f| f.puts exports} else - puts exports.join("\n") + puts exports end Index: win32/win32.c =================================================================== RCS file: /cvs/ruby/src/ruby/win32/win32.c,v retrieving revision 1.177 diff -U2 -p -r1.177 win32.c --- win32/win32.c 14 Oct 2005 13:06:44 -0000 1.177 +++ win32/win32.c 26 Oct 2005 06:23:26 -0000 @@ -1676,4 +1676,5 @@ init_stdhandle(void) stderr->_file = 2; } + setvbuf(stderr, NULL, _IONBF, 0); } #else @@ -2010,9 +2011,9 @@ is_readable_console(SOCKET sock) /* call static void catch_interrupt(void); -static long +static int do_select(int nfds, fd_set *rd, fd_set *wr, fd_set *ex, struct timeval *timeout) { - long r = 0; + int r = 0; if (nfds == 0) { @@ -2057,9 +2058,16 @@ subst(struct timeval *rest, const struct } -long +int rb_w32_select(int nfds, fd_set *rd, fd_set *wr, fd_set *ex, struct timeval *timeout) { - long r; + return rb_w32__select(nfds, rd, wr, ex, timeout); +} + +int WSAAPI +rb_w32__select(int nfds, fd_set *rd, fd_set *wr, fd_set *ex, + struct timeval *timeout) +{ + int r; fd_set pipe_rd; fd_set cons_rd; @@ -2198,4 +2206,10 @@ int rb_w32_accept(int s, struct sockaddr *addr, int *addrlen) { + return rb_w32__accept(s, addr, addrlen); +} + +int WSAAPI +rb_w32__accept(int s, struct sockaddr *addr, int *addrlen) +{ SOCKET r; @@ -2216,9 +2230,15 @@ rb_w32_accept(int s, struct sockaddr *ad } #undef bind -int +int rb_w32_bind(int s, const struct sockaddr *addr, int addrlen) { + return rb_w32__bind(s, addr, addrlen); +} + +int WSAAPI +rb_w32__bind(int s, const struct sockaddr *addr, int addrlen) +{ int r; @@ -2236,7 +2257,13 @@ rb_w32_bind(int s, const struct sockaddr #undef connect -int +int rb_w32_connect(int s, const struct sockaddr *addr, int addrlen) { + return rb_w32__connect(s, addr, addrlen); +} + +int WSAAPI +rb_w32__connect(int s, const struct sockaddr *addr, int addrlen) +{ int r; if (!NtSocketsInitialized) { @@ -2262,7 +2289,13 @@ rb_w32_connect(int s, const struct socka #undef getpeername -int +int rb_w32_getpeername(int s, struct sockaddr *addr, int *addrlen) { + return rb_w32__getpeername(s, addr, addrlen); +} + +int WSAAPI +rb_w32__getpeername(int s, struct sockaddr *addr, int *addrlen) +{ int r; if (!NtSocketsInitialized) { @@ -2279,7 +2312,13 @@ rb_w32_getpeername(int s, struct sockadd #undef getsockname -int +int rb_w32_getsockname(int s, struct sockaddr *addr, int *addrlen) { + return rb_w32__getsockname(s, addr, addrlen); +} + +int WSAAPI +rb_w32__getsockname(int s, struct sockaddr *addr, int *addrlen) +{ int r; if (!NtSocketsInitialized) { @@ -2294,7 +2333,13 @@ rb_w32_getsockname(int s, struct sockadd } -int +int rb_w32_getsockopt(int s, int level, int optname, char *optval, int *optlen) { + return rb_w32__getsockopt(s, level, optname, optval, optlen); +} + +int WSAAPI +rb_w32__getsockopt(int s, int level, int optname, char *optval, int *optlen) +{ int r; if (!NtSocketsInitialized) { @@ -2311,7 +2356,13 @@ rb_w32_getsockopt(int s, int level, int #undef ioctlsocket -int +int rb_w32_ioctlsocket(int s, long cmd, u_long *argp) { + return rb_w32__ioctlsocket(s, cmd, argp); +} + +int WSAAPI +rb_w32__ioctlsocket(int s, long cmd, u_long *argp) +{ int r; if (!NtSocketsInitialized) { @@ -2328,7 +2379,13 @@ rb_w32_ioctlsocket(int s, long cmd, u_lo #undef listen -int +int rb_w32_listen(int s, int backlog) { + return rb_w32__listen(s, backlog); +} + +int WSAAPI +rb_w32__listen(int s, int backlog) +{ int r; if (!NtSocketsInitialized) { @@ -2345,7 +2402,13 @@ rb_w32_listen(int s, int backlog) #undef recv -int +int rb_w32_recv(int s, char *buf, int len, int flags) { + return rb_w32__recv(s, buf, len, flags); +} + +int WSAAPI +rb_w32__recv(int s, char *buf, int len, int flags) +{ int r; if (!NtSocketsInitialized) { @@ -2362,8 +2425,15 @@ rb_w32_recv(int s, char *buf, int len, i #undef recvfrom -int -rb_w32_recvfrom(int s, char *buf, int len, int flags, +int +rb_w32_recvfrom(int s, char *buf, int len, int flags, struct sockaddr *from, int *fromlen) { + return rb_w32__recvfrom(s, buf, len, flags, from, fromlen); +} + +int WSAAPI +rb_w32__recvfrom(int s, char *buf, int len, int flags, + struct sockaddr *from, int *fromlen) +{ int r; if (!NtSocketsInitialized) { @@ -2380,7 +2450,13 @@ rb_w32_recvfrom(int s, char *buf, int le #undef send -int +int rb_w32_send(int s, const char *buf, int len, int flags) { + return rb_w32__send(s, buf, len, flags); +} + +int WSAAPI +rb_w32__send(int s, const char *buf, int len, int flags) +{ int r; if (!NtSocketsInitialized) { @@ -2397,8 +2473,15 @@ rb_w32_send(int s, const char *buf, int #undef sendto -int +int rb_w32_sendto(int s, const char *buf, int len, int flags, const struct sockaddr *to, int tolen) { + return rb_w32__sendto(s, buf, len, flags, to, tolen); +} + +int WSAAPI +rb_w32__sendto(int s, const char *buf, int len, int flags, + const struct sockaddr *to, int tolen) +{ int r; if (!NtSocketsInitialized) { @@ -2415,7 +2498,13 @@ rb_w32_sendto(int s, const char *buf, in #undef setsockopt -int +int rb_w32_setsockopt(int s, int level, int optname, const char *optval, int optlen) { + return rb_w32__setsockopt(s, level, optname, optval, optlen); +} + +int WSAAPI +rb_w32__setsockopt(int s, int level, int optname, const char *optval, int optlen) +{ int r; if (!NtSocketsInitialized) { @@ -2432,7 +2521,13 @@ rb_w32_setsockopt(int s, int level, int #undef shutdown -int +int rb_w32_shutdown(int s, int how) { + return rb_w32__shutdown(s, how); +} + +int WSAAPI +rb_w32__shutdown(int s, int how) +{ int r; if (!NtSocketsInitialized) { @@ -2489,7 +2584,13 @@ open_ifs_socket(int af, int type, int pr #undef socket -int +int rb_w32_socket(int af, int type, int protocol) { + return rb_w32__socket(af, type, protocol); +} + +int WSAAPI +rb_w32__socket(int af, int type, int protocol) +{ SOCKET s; int fd; @@ -2514,5 +2615,11 @@ rb_w32_socket(int af, int type, int prot struct hostent * -rb_w32_gethostbyaddr (const char *addr, int len, int type) +rb_w32_gethostbyaddr(const char *addr, int len, int type) +{ + return rb_w32__gethostbyaddr(addr, len, type); +} + +struct hostent * WSAAPI +rb_w32__gethostbyaddr(const char *addr, int len, int type) { struct hostent *r; @@ -2531,5 +2638,11 @@ rb_w32_gethostbyaddr (const char *addr, struct hostent * -rb_w32_gethostbyname (const char *name) +rb_w32_gethostbyname(const char *name) +{ + return rb_w32__gethostbyname(name); +} + +struct hostent * WSAAPI +rb_w32__gethostbyname(const char *name) { struct hostent *r; @@ -2548,5 +2661,11 @@ rb_w32_gethostbyname (const char *name) int -rb_w32_gethostname (char *name, int len) +rb_w32_gethostname(char *name, int len) +{ + return rb_w32__gethostname(name, len); +} + +int WSAAPI +rb_w32__gethostname(char *name, int len) { int r; @@ -2565,5 +2684,11 @@ rb_w32_gethostname (char *name, int len) struct protoent * -rb_w32_getprotobyname (const char *name) +rb_w32_getprotobyname(const char *name) +{ + return rb_w32__getprotobyname(name); +} + +struct protoent * WSAAPI +rb_w32__getprotobyname(const char *name) { struct protoent *r; @@ -2582,5 +2707,11 @@ rb_w32_getprotobyname (const char *name) struct protoent * -rb_w32_getprotobynumber (int num) +rb_w32_getprotobynumber(int num) +{ + return rb_w32__getprotobynumber(num); +} + +struct protoent * WSAAPI +rb_w32__getprotobynumber(int num) { struct protoent *r; @@ -2599,5 +2730,11 @@ rb_w32_getprotobynumber (int num) struct servent * -rb_w32_getservbyname (const char *name, const char *proto) +rb_w32_getservbyname(const char *name, const char *proto) +{ + return rb_w32__getservbyname(name, proto); +} + +struct servent * WSAAPI +rb_w32__getservbyname(const char *name, const char *proto) { struct servent *r; @@ -2616,5 +2753,11 @@ rb_w32_getservbyname (const char *name, struct servent * -rb_w32_getservbyport (int port, const char *proto) +rb_w32_getservbyport(int port, const char *proto) +{ + return rb_w32__getservbyport(port, proto); +} + +struct servent * WSAAPI +rb_w32__getservbyport(int port, const char *proto) { struct servent *r; @@ -3446,4 +3589,10 @@ int rb_w32_sleep(unsigned long msec) { + return rb_w32_msleep(msec); +} + +int WINAPI +rb_w32_msleep(unsigned long msec) +{ DWORD ret; RUBY_CRITICAL(ret = wait_events(NULL, msec)); @@ -3461,14 +3610,22 @@ catch_interrupt(void) } -#if defined __BORLANDC__ || defined _WIN32_WCE #undef read int -read(int fd, void *buf, size_t size) +rb_w32_read(int fd, void *buf, size_t size) { + int oerr = errno; int trap_immediate = rb_trap_immediate; - int ret = _read(fd, buf, size); - if ((ret < 0) && (errno == EPIPE)) { - errno = 0; - ret = 0; + int ret; + + again: + if ((ret= _read(fd, buf, size)) < 0) { + switch (GetLastError()) { + case ERROR_NETNAME_DELETED: +#if defined __BORLANDC__ || defined _WIN32_WCE + case ERROR_BROKEN_PIPE: +#endif + errno = oerr; + ret = 0; + } } rb_trap_immediate = trap_immediate; @@ -3476,5 +3633,4 @@ read(int fd, void *buf, size_t size) return ret; } -#endif #undef fgetc Index: win32/win32.h =================================================================== RCS file: /cvs/ruby/src/ruby/win32/win32.h,v retrieving revision 1.73 diff -U2 -p -r1.73 win32.h --- win32/win32.h 14 Sep 2005 14:30:37 -0000 1.73 +++ win32/win32.h 26 Oct 2005 06:40:09 -0000 @@ -82,21 +82,20 @@ extern "C++" { #undef utime #define getc(_stream) rb_w32_getc(_stream) +#define getchar() rb_w32_getc(stdin) #define putc(_c, _stream) rb_w32_putc(_c, _stream) +#define putchar(_c) rb_w32_putc(_c, stdout) +#ifdef RUBY_EXPORT #define fgetc(_stream) getc(_stream) #define fputc(_c, _stream) putc(_c, _stream) -#define getchar() rb_w32_getc(stdin) -#define putchar(_c) rb_w32_putc(_c, stdout) #define fgetchar() getchar() #define fputchar(_c) putchar(_c) #define utime(_p, _t) rb_w32_utime(_p, _t) -#define strcasecmp(s1, s2) stricmp(s1, s2) -#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n) - #define pipe(p) _pipe(p, 2048L, O_BINARY) #define close(h) rb_w32_close(h) #define fclose(f) rb_w32_fclose(f) #define getpid() rb_w32_getpid() -#define sleep(x) rb_w32_sleep((x)*1000) +#define sleep(x) rb_w32_msleep((x)*1000) +#define Sleep(msec) (void)rb_w32_msleep(msec) #ifdef __BORLANDC__ #define creat(p, m) _creat(p, m) @@ -105,5 +104,4 @@ extern "C++" { #define mktemp(t) _mktemp(t) #define tell(h) _tell(h) -#define unlink(p) _unlink(p) #define write(h, b, l) _write(h, b, l) #define _open _sopen @@ -119,5 +117,4 @@ extern "C++" { #endif -#define fsync(h) _commit(h) #undef stat #define stat(path,st) rb_w32_stat(path,st) @@ -135,4 +132,11 @@ extern "C++" { #undef unlink #define unlink(p) rb_w32_unlink(p) +#undef read +#define read(fd, buf, size) rb_w32_read(fd, buf, size) +#endif + +#define strcasecmp(s1, s2) stricmp(s1, s2) +#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n) +#define fsync(h) _commit(h) #ifdef __MINGW32__ @@ -153,5 +157,5 @@ extern void rb_w32_fdset(int, fd_set*) extern void rb_w32_fdclr(int, fd_set*); extern int rb_w32_fdisset(int, fd_set*); -extern long rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +extern int rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *); extern int rb_w32_getpeername(int, struct sockaddr *, int *); extern int rb_w32_getsockname(int, struct sockaddr *, int *); @@ -180,4 +184,30 @@ extern char **rb_w32_get_environ(void); extern void rb_w32_free_environ(char **); +#ifdef WSAAPI +extern int WSAAPI rb_w32__accept(int, struct sockaddr *, int *); +extern int WSAAPI rb_w32__bind(int, const struct sockaddr *, int); +extern int WSAAPI rb_w32__connect(int, const struct sockaddr *, int); +extern int WSAAPI rb_w32__select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +extern int WSAAPI rb_w32__getpeername(int, struct sockaddr *, int *); +extern int WSAAPI rb_w32__getsockname(int, struct sockaddr *, int *); +extern int WSAAPI rb_w32__getsockopt(int, int, int, char *, int *); +extern int WSAAPI rb_w32__ioctlsocket(int, long, u_long *); +extern int WSAAPI rb_w32__listen(int, int); +extern int WSAAPI rb_w32__recv(int, char *, int, int); +extern int WSAAPI rb_w32__recvfrom(int, char *, int, int, struct sockaddr *, int *); +extern int WSAAPI rb_w32__send(int, const char *, int, int); +extern int WSAAPI rb_w32__sendto(int, const char *, int, int, const struct sockaddr *, int); +extern int WSAAPI rb_w32__setsockopt(int, int, int, const char *, int); +extern int WSAAPI rb_w32__shutdown(int, int); +extern int WSAAPI rb_w32__socket(int, int, int); +extern struct hostent *WSAAPI rb_w32__gethostbyaddr(const char *, int, int); +extern struct hostent *WSAAPI rb_w32__gethostbyname(const char *); +extern int WSAAPI rb_w32__gethostname(char *, int); +extern struct protoent *WSAAPI rb_w32__getprotobyname(const char *); +extern struct protoent *WSAAPI rb_w32__getprotobynumber(int); +extern struct servent *WSAAPI rb_w32__getservbyname(const char *, const char *); +extern struct servent *WSAAPI rb_w32__getservbyport(int, const char *); +#endif + #define vsnprintf(s,n,f,l) rb_w32_vsnprintf(s,n,f,l) #define snprintf rb_w32_snprintf @@ -203,4 +233,5 @@ extern int rb_w32_rmdir(const char *); extern int rb_w32_unlink(const char *); extern int rb_w32_stat(const char *, struct stat *); +extern int rb_w32_read(int, void *, size_t); #ifdef __BORLANDC__ @@ -289,5 +320,7 @@ extern int setgid (rb_gid_t); extern char *rb_w32_strerror(int); +#ifdef RUBY_EXPORT #define strerror(e) rb_w32_strerror(e) +#endif #define PIPE_BUF 1024 @@ -352,19 +385,4 @@ extern char *rb_w32_strerror(int); #define O_NONBLOCK 1 -#ifdef accept -#undef accept -#endif -#define accept(s, a, l) rb_w32_accept(s, a, l) - -#ifdef bind -#undef bind -#endif -#define bind(s, a, l) rb_w32_bind(s, a, l) - -#ifdef connect -#undef connect -#endif -#define connect(s, a, l) rb_w32_connect(s, a, l) - #undef FD_SET #define FD_SET(f, s) rb_w32_fdset(f, s) @@ -376,127 +394,93 @@ extern char *rb_w32_strerror(int); #define FD_ISSET(f, s) rb_w32_fdisset(f, s) +#ifdef RUBY_EXPORT +#undef accept +#define accept(s, a, l) rb_w32__accept(s, a, l) + +#undef bind +#define bind(s, a, l) rb_w32__bind(s, a, l) + +#undef connect +#define connect(s, a, l) rb_w32__connect(s, a, l) + #undef select -#define select(n, r, w, e, t) rb_w32_select(n, r, w, e, t) +#define select(n, r, w, e, t) rb_w32__select(n, r, w, e, t) -#ifdef getpeername #undef getpeername -#endif -#define getpeername(s, a, l) rb_w32_getpeername(s, a, l) +#define getpeername(s, a, l) rb_w32__getpeername(s, a, l) -#ifdef getsockname #undef getsockname -#endif -#define getsockname(s, a, l) rb_w32_getsockname(s, a, l) +#define getsockname(s, a, l) rb_w32__getsockname(s, a, l) -#ifdef getsockopt #undef getsockopt -#endif -#define getsockopt(s, v, n, o, l) rb_w32_getsockopt(s, v, n, o, l) +#define getsockopt(s, v, n, o, l) rb_w32__getsockopt(s, v, n, o, l) -#ifdef ioctlsocket #undef ioctlsocket -#endif -#define ioctlsocket(s, c, a) rb_w32_ioctlsocket(s, c, a) +#define ioctlsocket(s, c, a) rb_w32__ioctlsocket(s, c, a) -#ifdef listen #undef listen -#endif -#define listen(s, b) rb_w32_listen(s, b) +#define listen(s, b) rb_w32__listen(s, b) -#ifdef recv #undef recv -#endif -#define recv(s, b, l, f) rb_w32_recv(s, b, l, f) +#define recv(s, b, l, f) rb_w32__recv(s, b, l, f) -#ifdef recvfrom #undef recvfrom -#endif -#define recvfrom(s, b, l, f, fr, frl) rb_w32_recvfrom(s, b, l, f, fr, frl) +#define recvfrom(s, b, l, f, fr, frl) rb_w32__recvfrom(s, b, l, f, fr, frl) -#ifdef send #undef send -#endif -#define send(s, b, l, f) rb_w32_send(s, b, l, f) +#define send(s, b, l, f) rb_w32__send(s, b, l, f) -#ifdef sendto #undef sendto -#endif -#define sendto(s, b, l, f, t, tl) rb_w32_sendto(s, b, l, f, t, tl) +#define sendto(s, b, l, f, t, tl) rb_w32__sendto(s, b, l, f, t, tl) -#ifdef setsockopt #undef setsockopt -#endif -#define setsockopt(s, v, n, o, l) rb_w32_setsockopt(s, v, n, o, l) +#define setsockopt(s, v, n, o, l) rb_w32__setsockopt(s, v, n, o, l) -#ifdef shutdown #undef shutdown -#endif -#define shutdown(s, h) rb_w32_shutdown(s, h) +#define shutdown(s, h) rb_w32__shutdown(s, h) -#ifdef socket #undef socket -#endif -#define socket(s, t, p) rb_w32_socket(s, t, p) +#define socket(s, t, p) rb_w32__socket(s, t, p) -#ifdef gethostbyaddr #undef gethostbyaddr -#endif -#define gethostbyaddr(a, l, t) rb_w32_gethostbyaddr(a, l, t) +#define gethostbyaddr(a, l, t) rb_w32__gethostbyaddr(a, l, t) -#ifdef gethostbyname #undef gethostbyname -#endif -#define gethostbyname(n) rb_w32_gethostbyname(n) +#define gethostbyname(n) rb_w32__gethostbyname(n) -#ifdef gethostname #undef gethostname -#endif -#define gethostname(n, l) rb_w32_gethostname(n, l) +#define gethostname(n, l) rb_w32__gethostname(n, l) -#ifdef getprotobyname #undef getprotobyname -#endif -#define getprotobyname(n) rb_w32_getprotobyname(n) +#define getprotobyname(n) rb_w32__getprotobyname(n) -#ifdef getprotobynumber #undef getprotobynumber -#endif -#define getprotobynumber(n) rb_w32_getprotobynumber(n) +#define getprotobynumber(n) rb_w32__getprotobynumber(n) -#ifdef getservbyname #undef getservbyname -#endif -#define getservbyname(n, p) rb_w32_getservbyname(n, p) +#define getservbyname(n, p) rb_w32__getservbyname(n, p) -#ifdef getservbyport #undef getservbyport -#endif -#define getservbyport(p, pr) rb_w32_getservbyport(p, pr) +#define getservbyport(p, pr) rb_w32__getservbyport(p, pr) -#ifdef socketpair #undef socketpair -#endif #define socketpair(a, t, p, s) rb_w32_socketpair(a, t, p, s) -#ifdef get_osfhandle #undef get_osfhandle -#endif #define get_osfhandle(h) rb_w32_get_osfhandle(h) -#ifdef getcwd #undef getcwd -#endif #define getcwd(b, s) rb_w32_getcwd(b, s) -#ifdef getenv #undef getenv -#endif #define getenv(n) rb_w32_getenv(n) -#ifdef rename #undef rename -#endif #define rename(o, n) rb_w32_rename(o, n) +#undef times +#define times(t) rb_w32_times(t) +#endif + struct tms { long tms_utime; @@ -506,8 +490,4 @@ struct tms { }; -#ifdef times -#undef times -#endif -#define times(t) rb_w32_times(t) int rb_w32_times(struct tms *); @@ -523,5 +503,5 @@ int rb_w32_close(int); int rb_w32_fclose(FILE*); int rb_w32_utime(const char *, const struct utimbuf *); -#define Sleep(msec) (void)rb_w32_sleep(msec) +int WINAPI rb_w32_msleep(unsigned long msec); /* -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦