diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | include/ruby/intern.h | 2 | ||||
-rw-r--r-- | thread.c | 11 |
3 files changed, 18 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Sun May 15 23:53:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> + + * include/ruby/intern.h: resurrect old rb_fd_copy(). + * thread.c (rb_fd_copy): ditto. + Sun May 15 23:45:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> * include/ruby/intern.h: remove rb_fd_copy() to rb_fd_dup() and diff --git a/include/ruby/intern.h b/include/ruby/intern.h index ca8f7b984a..71fc3fcb2c 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -250,6 +250,7 @@ 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); void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src); int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *); @@ -284,6 +285,7 @@ typedef fd_set rb_fdset_t; #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_dup(d, s) (*(d) = *(s)) #define rb_fd_resize(n, f) ((void)(f)) #define rb_fd_ptr(f) (f) @@ -2392,6 +2392,17 @@ rb_fd_isset(int n, const rb_fdset_t *fds) } void +rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max) +{ + size_t size = howmany(max, NFDBITS) * sizeof(fd_mask); + + if (size < sizeof(fd_set)) size = sizeof(fd_set); + dst->maxfd = max; + dst->fdset = xrealloc(dst->fdset, size); + memcpy(dst->fdset, src, size); +} + +void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src) { size_t size = howmany(rb_fd_max(src), NFDBITS) * sizeof(fd_mask); |