summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-06-24 04:24:09 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-06-24 04:24:09 +0000
commit031d2e84df58ed54948671931544c41cf32da1ca (patch)
tree1118362b178f55bf14d142752b8d61976191b991 /win32
parent37bcc42c983987ec504efd9556f0cb884f0b424d (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.def25
-rw-r--r--win32/win32.c30
-rw-r--r--win32/win32.h12
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