diff options
author | Eric Wong <bofh@yhbt.net> | 2023-09-10 18:49:47 +0000 |
---|---|---|
committer | Eric Wong <bofh@yhbt.net> | 2023-09-10 20:11:22 +0000 |
commit | 12e7f65ab9b6a14b3d59094f4d305b3150e0e7b7 (patch) | |
tree | 3155b2f398599044a02e26a097a4462c40f211f4 | |
parent | 586ab4d80f44592914e5e0505ceeb630c68432f3 (diff) | |
download | kgio-12e7f65ab9b6a14b3d59094f4d305b3150e0e7b7.tar.gz |
The generic version works for all Rubies
-rw-r--r-- | ext/kgio/sock_for_fd.h | 58 |
1 files changed, 1 insertions, 57 deletions
diff --git a/ext/kgio/sock_for_fd.h b/ext/kgio/sock_for_fd.h index 55f9ccb..cfec302 100644 --- a/ext/kgio/sock_for_fd.h +++ b/ext/kgio/sock_for_fd.h @@ -1,71 +1,15 @@ #ifndef SOCK_FOR_FD_H #define SOCK_FOR_FD_H #include <ruby.h> -#ifdef HAVE_RUBY_IO_H -# include <ruby/io.h> -#else -# include <stdio.h> -# include <rubyio.h> -#endif -#if defined(MakeOpenFile) && \ - defined(HAVE_RB_IO_T) && (HAVE_RB_IO_T == 1) && \ - defined(HAVE_RB_IO_ASCII8BIT_BINMODE) && \ - defined(HAVE_ST_FD) && \ - defined(HAVE_ST_MODE) -# define SOCK_FOR_FD (19) -# define FMODE_NOREVLOOKUP 0x100 -#elif defined(MakeOpenFile) && \ - (defined(OpenFile) || defined(HAVE_RB_IO_T)) && \ - defined(HAVE_RB_FDOPEN) && \ - defined(HAVE_ST_F) && \ - defined(HAVE_ST_F2) && \ - defined(HAVE_ST_MODE) -# define SOCK_FOR_FD (18) -#else -# define SOCK_FOR_FD (-1) -#endif - -#if SOCK_FOR_FD == 19 /* modeled after ext/socket/init.c */ -static VALUE sock_for_fd(VALUE klass, int fd) -{ - VALUE sock; - rb_io_t *fp; - - rb_update_max_fd(fd); /* 1.9.3+ API */ - sock = rb_obj_alloc(klass); - MakeOpenFile(sock, fp); - fp->fd = fd; - fp->mode = FMODE_READWRITE|FMODE_DUPLEX|FMODE_NOREVLOOKUP; - rb_io_ascii8bit_binmode(sock); - rb_io_synchronized(fp); - return sock; -} -#elif SOCK_FOR_FD == 18 /* modeled after init_sock() in ext/socket/socket.c */ -static VALUE sock_for_fd(VALUE klass, int fd) -{ - VALUE sock = rb_obj_alloc(klass); - OpenFile *fp; - - MakeOpenFile(sock, fp); - fp->f = rb_fdopen(fd, "r"); - fp->f2 = rb_fdopen(fd, "w"); - fp->mode = FMODE_READWRITE; - rb_io_synchronized(fp); - return sock; -} -#else /* Rubinius, et al. */ static ID id_for_fd; static VALUE sock_for_fd(VALUE klass, int fd) { return rb_funcall(klass, id_for_fd, 1, INT2NUM(fd)); } + static void init_sock_for_fd(void) { id_for_fd = rb_intern("for_fd"); } -#endif /* sock_for_fd */ -#if SOCK_FOR_FD > 0 -# define init_sock_for_fd() for (;0;) -#endif #endif /* SOCK_FOR_FD_H */ |