diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-06-24 04:24:09 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-06-24 04:24:09 +0000 |
commit | 031d2e84df58ed54948671931544c41cf32da1ca (patch) | |
tree | 1118362b178f55bf14d142752b8d61976191b991 /win32 | |
parent | 37bcc42c983987ec504efd9556f0cb884f0b424d (diff) |
990624
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r-- | win32/ruby.def | 25 | ||||
-rw-r--r-- | win32/win32.c | 30 | ||||
-rw-r--r-- | win32/win32.h | 12 |
3 files changed, 66 insertions, 1 deletions
diff --git a/win32/ruby.def b/win32/ruby.def index b4009f8316..018c9bff34 100644 --- a/win32/ruby.def +++ b/win32/ruby.def @@ -27,6 +27,8 @@ EXPORTS rb_mErrno; ;eval.c: rb_cProc + rb_thread_tick + rb_thread_critical ;file.c: rb_cFile ;hash.c: @@ -35,6 +37,7 @@ EXPORTS ruby_unsetenv ;io.c: rb_cIO + rb_io_check_closed ;numeric.c: rb_cNumeric rb_cFloat @@ -52,6 +55,10 @@ EXPORTS rb_cFalseClass ;re.c: rb_cRegexp +;signal.c: + rb_trap_immediate + rb_trap_pending + rb_prohibit_interrupt ;string.c: rb_cString rb_cStruct @@ -60,9 +67,13 @@ EXPORTS ;missing/nt.c NtInitialize myfdopen + myfdclose myaccept mybind myconnect + myfdset + myfdisset + myselect mygetpeername mygetsockname mygetsockopt @@ -82,10 +93,11 @@ EXPORTS mygetprotobynumber mygetservbyname mygetservbyport + myget_osfhandle ;array.c rb_ary_freeze - rb_ary_new2 rb_ary_new + rb_ary_new2 rb_ary_new3 rb_ary_new4 rb_assoc_new @@ -118,6 +130,7 @@ EXPORTS rb_uint2inum rb_int2inum rb_str2inum + rb_str2cstr rb_big2str rb_big2ulong rb_big2long @@ -236,6 +249,11 @@ EXPORTS rb_thread_scope_shared_p rb_thread_interrupt rb_thread_trap_eval + rb_thread_fd_close + rb_thread_stop + rb_thread_wakeup + rb_thread_run + rb_thread_create rb_catch rb_throw rb_yield @@ -293,6 +311,7 @@ EXPORTS rb_obj_is_instance_of rb_obj_is_kind_of rb_obj_alloc + rb_obj_taint rb_to_id rb_class_of rb_type @@ -301,6 +320,7 @@ EXPORTS rb_Float rb_String rb_Array + rb_num2dbl ; parse.c rb_node_newnode rb_id_attrset @@ -334,6 +354,9 @@ EXPORTS rb_get_kcode rb_set_kcode ; ruby.c + rb_argv + rb_argv0 + rb_progname rb_load_file ruby_script ruby_prog_init diff --git a/win32/win32.c b/win32/win32.c index 7ff86366e9..db43ce6154 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -1780,6 +1780,36 @@ ioctl(int i, unsigned int u, long data) } +#undef FD_SET + +void +myfdset(int fd, fd_set *set) +{ + unsigned int i; + SOCKET s = TO_SOCKET(fd); + + for (i = 0; i < set->fd_count; i++) { + if (set->fd_array[i] == s) { + return; + } + } + if (i == set->fd_count) { + if (set->fd_count < FD_SETSIZE) { + set->fd_array[i] = s; + set->fd_count++; + } + } +} + + +#undef FD_ISSET + +int +myfdisset(int fd, fd_set *set) +{ + return __WSAFDIsSet(TO_SOCKET(fd), set); +} + // // Networking trampolines // These are used to avoid socket startup/shutdown overhead in case diff --git a/win32/win32.h b/win32/win32.h index 649cbe721d..fd96632052 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -175,6 +175,9 @@ extern void myfdclose(FILE *); extern SOCKET myaccept(SOCKET, struct sockaddr *, int *); extern int mybind(SOCKET, struct sockaddr *, int); extern int myconnect(SOCKET, struct sockaddr *, int); +extern void myfdset(int, fd_set*); +extern int myfdisset(int, fd_set*); +extern long myselect(int, fd_set *, fd_set *, fd_set *, struct timeval *); extern int mygetpeername(SOCKET, struct sockaddr *, int *); extern int mygetsockname(SOCKET, struct sockaddr *, int *); extern int mygetsockopt(SOCKET, int, int, char *, int *); @@ -274,6 +277,15 @@ extern char *mystrerror(int); #endif #define connect myconnect +#undef FD_SET +#define FD_SET myfdset + +#undef FD_ISSET +#define FD_ISSET myfdisset + +#undef select +#define select myselect + #ifdef getpeername #undef getpeername #endif |