diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | io.c | 12 |
2 files changed, 13 insertions, 4 deletions
@@ -1,3 +1,8 @@ +Wed Feb 2 17:09:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> + + * io.c (rb_io_fdatasync): Use fsync(2) if if the underlying + operating system does not support fdatasync(2). + Wed Feb 2 14:51:08 2011 Eric Hodel <drbrain@segment7.net> * lib/rdoc/markup/to_tt_only.rb: commit miss @@ -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 /* |