diff options
author | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-02-02 08:11:29 +0000 |
---|---|---|
committer | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-02-02 08:11:29 +0000 |
commit | 3722e3a29aedcdd78ad07e3ed643a78b61ef345a (patch) | |
tree | be94da9f84b66ce281e45b99754d6d457511512a /io.c | |
parent | de15b19498028d497b528af227057edfc877b66e (diff) | |
download | ruby-3722e3a29aedcdd78ad07e3ed643a78b61ef345a.tar.gz |
* io.c (rb_io_fdatasync): Use fsync(2) if if the underlying
operating system does not support fdatasync(2).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -1421,18 +1421,22 @@ static VALUE rb_io_fdatasync(VALUE io) { rb_io_t *fptr; + int saved_errno = 0; io = GetWriteIO(io); GetOpenFile(io, fptr); if (io_fflush(fptr) < 0) rb_sys_fail(0); - if (fdatasync(fptr->fd) < 0) - rb_sys_fail_path(fptr->pathv); - return INT2FIX(0); + + if (fdatasync(fptr->fd) == 0) + return INT2FIX(0); + + /* fall back */ + return rb_io_fsync(io); } #else -#define rb_io_fdatasync rb_f_notimplement +#define rb_io_fdatasync rb_io_fsync #endif /* |