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

ruby-changes:11014

From: matz <ko1@a...>
Date: Wed, 25 Feb 2009 00:45:28 +0900 (JST)
Subject: [ruby-changes:11014] Ruby:r22604 (trunk): * file.c (rb_file_size): new method added.

matz	2009-02-25 00:45:16 +0900 (Wed, 25 Feb 2009)

  New Revision: 22604

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22604

  Log:
    * file.c (rb_file_size): new method added.  [ruby-core:22088]

  Modified files:
    trunk/ChangeLog
    trunk/file.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22603)
+++ ChangeLog	(revision 22604)
@@ -6,6 +6,10 @@
 
 	* ext/socket/tcpserver.c (tcp_svr_init): Make use of it.
 
+Wed Feb 25 00:28:25 2009  Yukihiro Matsumoto  <matz@r...>
+
+	* file.c (rb_file_size): new method added.  [ruby-core:22088]
+
 Wed Feb 25 00:15:15 2009  Yukihiro Matsumoto  <matz@r...>
 
 	* ext/curses/curses.c (curses_colors): new method added.  a patch
Index: file.c
===================================================================
--- file.c	(revision 22603)
+++ file.c	(revision 22604)
@@ -1807,6 +1807,22 @@
     return stat_ctime(&st);
 }
 
+static VALUE
+rb_file_size(VALUE obj)
+{
+    rb_io_t *fptr;
+    struct stat st;
+
+    GetOpenFile(obj, fptr);
+    if (fptr->mode & FMODE_WRITABLE) {
+	rb_io_flush(obj);
+    }
+    if (fstat(fptr->fd, &st) == -1) {
+	rb_sys_fail_path(fptr->pathv);
+    }
+    return OFFT2NUM(st.st_size);
+}
+
 static void
 chmod_internal(const char *path, void *mode)
 {
@@ -4766,6 +4782,7 @@
     rb_define_method(rb_cFile, "atime", rb_file_atime, 0);
     rb_define_method(rb_cFile, "mtime", rb_file_mtime, 0);
     rb_define_method(rb_cFile, "ctime", rb_file_ctime, 0);
+    rb_define_method(rb_cFile, "size", rb_file_size, 0);
 
     rb_define_method(rb_cFile, "chmod", rb_file_chmod, 1);
     rb_define_method(rb_cFile, "chown", rb_file_chown, 2);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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