From 3722e3a29aedcdd78ad07e3ed643a78b61ef345a Mon Sep 17 00:00:00 2001 From: kosaki Date: Wed, 2 Feb 2011 08:11:29 +0000 Subject: [PATCH] * 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 --- ChangeLog | 5 +++++ io.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4aed6c6c96..056bb2ea76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Feb 2 17:09:22 2011 KOSAKI Motohiro + + * 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 * lib/rdoc/markup/to_tt_only.rb: commit miss diff --git a/io.c b/io.c index 0b0a278697..89932953ef 100644 --- a/io.c +++ b/io.c @@ -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 /*