ruby-changes:12138
From: nobu <ko1@a...>
Date: Mon, 22 Jun 2009 13:52:10 +0900 (JST)
Subject: [ruby-changes:12138] Ruby:r23811 (trunk): * io.c (rb_io_fdatasync): new method IO#fdatasync.
nobu 2009-06-22 13:50:29 +0900 (Mon, 22 Jun 2009) New Revision: 23811 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23811 Log: * io.c (rb_io_fdatasync): new method IO#fdatasync. Modified files: trunk/ChangeLog trunk/configure.in trunk/io.c trunk/version.h Index: configure.in =================================================================== --- configure.in (revision 23810) +++ configure.in (revision 23811) @@ -1076,9 +1076,9 @@ strchr strstr crypt flock vsnprintf\ isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \ strlcpy strlcat) -AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall chroot fsync getcwd eaccess\ +AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall chroot getcwd eaccess\ truncate ftruncate chsize times utimes utimensat fcntl lockf lstat\ - link symlink readlink readdir_r\ + link symlink readlink readdir_r fsync fdatasync\ setitimer setruid seteuid setreuid setresuid setproctitle socketpair\ setrgid setegid setregid setresgid issetugid pause lchown lchmod\ getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\ Index: ChangeLog =================================================================== --- ChangeLog (revision 23810) +++ ChangeLog (revision 23811) @@ -1,3 +1,7 @@ +Mon Jun 22 13:50:23 2009 Nobuyoshi Nakada <nobu@r...> + + * io.c (rb_io_fdatasync): new method IO#fdatasync. + Sun Jun 21 22:33:05 2009 Yusuke Endoh <mame@t...> * load.c (Init_load): $: must be readonly. [ruby-dev:38690] Index: io.c =================================================================== --- io.c (revision 23810) +++ io.c (revision 23811) @@ -1319,8 +1319,36 @@ #define rb_io_fsync rb_f_notimplement #endif +#ifdef HAVE_FDATASYNC /* * call-seq: + * ios.fdatasync => 0 or nil + * + * Immediately writes all buffered data in <em>ios</em> to disk. + * Returns <code>nil</code> if the underlying operating system does not + * support <em>fdatasync(2)</em>. + */ + +static VALUE +rb_io_fdatasync(VALUE io) +{ + rb_io_t *fptr; + + 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); +} +#else +#define rb_io_fdatasync rb_f_notimplement +#endif + +/* + * call-seq: * ios.fileno => fixnum * ios.to_i => fixnum * @@ -8781,6 +8809,7 @@ rb_define_method(rb_cIO, "to_io", rb_io_to_io, 0); rb_define_method(rb_cIO, "fsync", rb_io_fsync, 0); + rb_define_method(rb_cIO, "fdatasync", rb_io_fdatasync, 0); rb_define_method(rb_cIO, "sync", rb_io_sync, 0); rb_define_method(rb_cIO, "sync=", rb_io_set_sync, 1); Index: version.h =================================================================== --- version.h (revision 23810) +++ version.h (revision 23811) @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_RELEASE_DATE "2009-06-21" +#define RUBY_RELEASE_DATE "2009-06-22" #define RUBY_PATCHLEVEL -1 #define RUBY_BRANCH_NAME "trunk" @@ -8,7 +8,7 @@ #define RUBY_VERSION_TEENY 1 #define RUBY_RELEASE_YEAR 2009 #define RUBY_RELEASE_MONTH 6 -#define RUBY_RELEASE_DAY 21 +#define RUBY_RELEASE_DAY 22 #include "ruby/version.h" -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/