From c9d126aec990acb56dfa87b67e9fc312f82da91d Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 3 Jun 2005 14:23:17 +0000 Subject: * 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 --- intern.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'intern.h') 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))); -- cgit v1.2.3