diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-10-31 01:52:21 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-10-31 01:52:21 +0000 |
commit | bdc85361e48340b4f9d6b1039a8c338a2cb64138 (patch) | |
tree | 3e1267afbeba95c9be332430d0354c0a3326db4c /io.c | |
parent | 0bbb8e8975ad9f00d467218098dd2d6ad8895974 (diff) | |
download | ruby-bdc85361e48340b4f9d6b1039a8c338a2cb64138.tar.gz |
* io.c (rb_cloexec_fcntl_dupfd): this function needs F_DUPFD.
* io.c (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd() only if the
platform has F_DUPFD.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -302,11 +302,15 @@ rb_cloexec_pipe(int fildes[2]) int rb_cloexec_fcntl_dupfd(int fd, int minfd) { +#if defined(F_DUPFD) int ret; ret = fcntl(fd, F_DUPFD, minfd); if (ret == -1) return -1; fd_set_cloexec(ret); return ret; +#else + return -1; +#endif } #define argf_of(obj) (*(struct argf *)DATA_PTR(obj)) @@ -7831,9 +7835,11 @@ static VALUE nogvl_io_cntl(void *ptr) if (arg->io_p) return (VALUE)ioctl(arg->fd, arg->cmd, arg->narg); else +#if defined(F_DUPFD) if (arg->cmd == F_DUPFD) return (VALUE)rb_cloexec_fcntl_dupfd(arg->fd, arg->narg); else +#endif return (VALUE)fcntl(arg->fd, arg->cmd, arg->narg); } |