diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2021-07-02 22:41:16 +1200 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2021-11-10 19:21:05 +1300 |
commit | 4b8903421828cb9d4de139180563ae8d8f04e1ab (patch) | |
tree | 21a0d02ba22afad6a4ce1c042acf6d74767dc5a2 /file.c | |
parent | 56b90cf94465ce347a3d9a779363c78ce3deb180 (diff) |
IO::Buffer for scheduler interface.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4621
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -2515,20 +2515,27 @@ rb_file_birthtime(VALUE obj) * */ -static VALUE -rb_file_size(VALUE obj) +size_t rb_file_size(VALUE file) { rb_io_t *fptr; struct stat st; - GetOpenFile(obj, fptr); + RB_IO_POINTER(file, fptr); if (fptr->mode & FMODE_WRITABLE) { - rb_io_flush_raw(obj, 0); + rb_io_flush_raw(file, 0); } + if (fstat(fptr->fd, &st) == -1) { - rb_sys_fail_path(fptr->pathv); + rb_sys_fail_path(fptr->pathv); } - return OFFT2NUM(st.st_size); + + return st.st_size; +} + +static VALUE +file_size(VALUE self) +{ + return RB_SIZE2NUM(rb_file_size(self)); } static int @@ -6780,7 +6787,7 @@ Init_File(void) 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, "birthtime", rb_file_birthtime, 0); - rb_define_method(rb_cFile, "size", rb_file_size, 0); + rb_define_method(rb_cFile, "size", file_size, 0); rb_define_method(rb_cFile, "chmod", rb_file_chmod, 1); rb_define_method(rb_cFile, "chown", rb_file_chown, 2); |