[#17017] 標準添付案 — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

21 messages 2002/05/08
[#17019] Re: 標準添付案 — "Akinori MUSHA" <knu@...> 2002/05/08

At Wed, 8 May 2002 19:50:17 +0900,

[#17021] Re: 標準添付案 — GOTO Kentaro <gotoken@...> 2002/05/08

At Wed, 8 May 2002 22:45:06 +0900,

[#17031] double acosh — WATANABE Hirofumi <eban@...>

わたなべです。

25 messages 2002/05/10
[#17032] Re: double acosh — nobu.nakada@... 2002/05/10

なかだです。

[#17033] Re: double acosh — WATANABE Hirofumi <eban@...> 2002/05/10

わたなべです。

[#17036] Re: double acosh — matz@... (Yukihiro Matsumoto) 2002/05/10

まつもと ゆきひろです

[#17039] Re: double acosh — WATANABE Hirofumi <eban@...> 2002/05/10

わたなべです。

[#17134] argv[0] — Tanaka Akira <akr@...17n.org>

ふと ruby インタプリタの C における argv[0] を知りたくなったんですが、

23 messages 2002/05/18
[#17139] Re: argv[0] — matz@... (Yukihiro Matsumoto) 2002/05/18

まつもと ゆきひろです

[#17144] Re: msvcrt — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

18 messages 2002/05/19

[#17179] コマンドラインオプションの順序制約 — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

13 messages 2002/05/22
[#17181] Re: コマンドラインオプションの順序制約 — matz@... (Yukihiro Matsumoto) 2002/05/22

まつもと ゆきひろです

[#17228] Re: [ruby-list:35305] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

28 messages 2002/05/30

[ruby-dev:17227] Re: StringIO

From: nobu.nakada@...
Date: 2002-05-30 02:20:53 UTC
List: ruby-dev #17227
なかだです。

At Thu, 30 May 2002 10:00:13 +0900,
Tanaka Akira wrote:
> class IO
>   def size
>     flush
>     stat.size
>   end
> end
> 
> というような IO#size を加える方がよいと思います。

f2があるのはpipeかsocketなので、どっち使っても意味はないような
気はしますが、とりあえずflushした側を見るようにしてみました。


Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.140
diff -u -2 -p -r1.140 io.c
--- io.c	2002/05/29 05:20:33	1.140
+++ io.c	2002/05/30 02:11:06
@@ -448,4 +448,28 @@ rb_io_eof(io)
 
 static VALUE
+rb_io_size(io)
+    VALUE io;
+{
+    OpenFile *fptr;
+    FILE *f;
+    struct stat st;
+
+    GetOpenFile(io, fptr);
+    f = fptr->f;
+    if (fptr->f2) {
+	io_fflush(f = fptr->f2, fptr);
+    }
+    else if (fptr->mode & FMODE_WRITABLE) {
+	io_fflush(f, fptr);
+    }
+
+    if (fstat(fileno(f), &st) == -1) {
+	rb_sys_fail(fptr->path);
+    }
+
+    return OFFT2NUM(st.st_size);
+}
+
+static VALUE
 rb_io_sync(io)
     VALUE io;
@@ -3802,4 +3826,5 @@ Init_IO()
     rb_define_method(rb_cIO, "eof", rb_io_eof, 0);
     rb_define_method(rb_cIO, "eof?", rb_io_eof, 0);
+    rb_define_method(rb_cIO, "size", rb_io_size, 0);
 
     rb_define_method(rb_cIO, "close", rb_io_close_m, 0);


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread