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/