summaryrefslogtreecommitdiff
path: root/ext/-test-/old_thread_select/old_thread_select.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/-test-/old_thread_select/old_thread_select.c')
-rw-r--r--ext/-test-/old_thread_select/old_thread_select.c75
1 files changed, 0 insertions, 75 deletions
diff --git a/ext/-test-/old_thread_select/old_thread_select.c b/ext/-test-/old_thread_select/old_thread_select.c
deleted file mode 100644
index e374f02..0000000
--- a/ext/-test-/old_thread_select/old_thread_select.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* test case for deprecated C API */
-#include "ruby/ruby.h"
-#include "ruby/io.h"
-
-static fd_set * array2fdset(fd_set *fds, VALUE ary, int *max)
-{
- long i;
-
- if (NIL_P(ary))
- return NULL;
-
- FD_ZERO(fds);
- Check_Type(ary, T_ARRAY);
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- VALUE val = RARRAY_PTR(ary)[i];
- int fd;
-
- Check_Type(val, T_FIXNUM);
- fd = FIX2INT(val);
- if (fd >= *max)
- *max = fd + 1;
- FD_SET(fd, fds);
- }
-
- return fds;
-}
-
-static void fdset2array(VALUE dst, fd_set *fds, int max)
-{
- int i;
-
- rb_ary_clear(dst);
-
- for (i = 0; i < max; i++) {
- if (FD_ISSET(i, fds))
- rb_ary_push(dst, INT2NUM(i));
- }
-}
-
-static VALUE
-old_thread_select(VALUE klass, VALUE r, VALUE w, VALUE e, VALUE timeout)
-{
- struct timeval tv;
- struct timeval *tvp = NULL;
- fd_set rfds, wfds, efds;
- fd_set *rp, *wp, *ep;
- int rc;
- int max = 0;
-
- if (!NIL_P(timeout)) {
- tv = rb_time_timeval(timeout);
- tvp = &tv;
- }
- rp = array2fdset(&rfds, r, &max);
- wp = array2fdset(&wfds, w, &max);
- ep = array2fdset(&efds, e, &max);
- rc = rb_thread_select(max, rp, wp, ep, tvp);
- if (rc == -1)
- rb_sys_fail("rb_wait_for_single_fd");
-
- if (rp)
- fdset2array(r, &rfds, max);
- if (wp)
- fdset2array(w, &wfds, max);
- if (ep)
- fdset2array(e, &efds, max);
- return INT2NUM(rc);
-}
-
-void
-Init_old_thread_select(void)
-{
- rb_define_singleton_method(rb_cIO, "old_thread_select",
- old_thread_select, 4);
-}