[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]