summaryrefslogtreecommitdiff
path: root/intern.h
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-03 14:23:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-03 14:23:17 +0000
commitc9d126aec990acb56dfa87b67e9fc312f82da91d (patch)
tree23d741448c4f9a2b75c2cd876423ed27db4edd8e /intern.h
parentf0ede6b31cc81671d231a92db8b3e87127f4eb24 (diff)
* intern.h (rb_fdset_t): deal with fd bit sets over FD_SETSIZE.
fixed: [ruby-dev:26187] * eval.c (rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr, rb_fd_isset, rb_fd_copy): ditto. * io.c (rb_io_wait_readable, rb_io_wait_writable, rb_f_select): ditto. * ext/io/wait/wait.c (io_wait): ditto. * ext/socket/socket.c (wait_connectable, unix_recv_io): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'intern.h')
-rw-r--r--intern.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/intern.h b/intern.h
index 221e223b05..d4b5d8bff3 100644
--- a/intern.h
+++ b/intern.h
@@ -145,6 +145,40 @@ NORETURN(void rb_load_fail _((const char*)));
NORETURN(void rb_error_frozen _((const char*)));
void rb_check_frozen _((VALUE));
/* eval.c */
+#ifdef NFDBITS
+typedef struct {
+ int maxfd;
+ fd_set *fdset;
+} rb_fdset_t;
+
+#define HAVE_RB_FD_INIT 1
+
+void rb_fd_init _((volatile rb_fdset_t *));
+void rb_fd_term _((rb_fdset_t *));
+void rb_fd_zero _((rb_fdset_t *));
+void rb_fd_set _((int, rb_fdset_t *));
+void rb_fd_clr _((int, rb_fdset_t *));
+int rb_fd_isset _((int, const rb_fdset_t *));
+void rb_fd_copy _((rb_fdset_t *, const fd_set *, int));
+
+#define rb_fd_ptr(f) ((f)->fdset)
+#define rb_fd_max(f) ((f)->maxfd)
+
+#else
+
+typedef fd_set rb_fdset_t;
+#define rb_fd_zero(f) FD_ZERO(f)
+#define rb_fd_set(n, f) FD_SET(n, f)
+#define rb_fd_clr(n, f) FD_CLR(n, f)
+#define rb_fd_isset(n, f) FD_ISSET(n, f)
+#define rb_fd_copy(d, s, n) (*(d) = *(s))
+#define rb_fd_ptr(f) (f)
+#define rb_fd_init(f) FD_ZERO(f)
+#define rb_fd_term(f) (f)
+#define rb_fd_max(f) FD_SETSIZE
+
+#endif
+
RUBY_EXTERN struct RNode *ruby_current_node;
void ruby_set_current_source _((void));
NORETURN(void rb_exc_raise _((VALUE)));