[#24698] NKF(nkf2)を1.8ブランチに入れました — "NARUSE, Yui" <naruse@...>

naruseです。

14 messages 2004/11/03
[#24734] Re: NKF(nkf2)を1.8ブランチに入れました — 堀川 久 <vzw00011@...> 2004/11/06

こんにちは。

[#24720] メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...>

MoonWolfです。

17 messages 2004/11/05
[#24721] Re: メール関係ライブラリの標準添付について — Yukihiro Matsumoto <matz@...> 2004/11/05

まつもと ゆきひろです

[#24722] Re: メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...> 2004/11/05

MoonWolfです。

[#24804] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...>

mput です。 ruby-dev に移動します。

21 messages 2004/11/13
[#24805] Re: まつもとさんの負担を減らすために、何ができるだろう — Tanaka Akira <akr@...17n.org> 2004/11/13

In article <2D6284E3-351D-11D9-B7EF-000393735AAE@mput.dip.jp>,

[#24806] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24808] Re: まつもとさんの負担を減らすために、何ができるだろう — Masayoshi Takahashi <maki@...> 2004/11/13

高橋征義です。

[#24809] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24834] Process.getrlimit and Process.setrlimit — Tanaka Akira <akr@...17n.org>

Process.getrlimit と Process.setrlimit が欲しいので実装してみました。

25 messages 2004/11/13

[#24965] sync and stdio buffering — Tanaka Akira <akr@...17n.org>

ちょっとした思いつきなのですが、

12 messages 2004/11/26

[#24993] rb_io_sysread dumps core [BUG] rb_sys_fail() - errno == 0 — Tietew <tietew-ml-ruby-dev@...>

ソケットとスレッドを大量に使うアプリ(具体的には IRCbot です)を

13 messages 2004/11/29

[#25003] IO#flush dumps core again — Tanaka Akira <akr@...17n.org>

次のようにすると core を吐きます。

28 messages 2004/11/30
[#25004] Re: IO#flush dumps core again — nobu@... 2004/11/30

なかだです。

[#25005] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/11/30

まつもと ゆきひろです

[#25009] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101836040.635395.27476.nullmailer@x31.priv.netlab.jp>,

[#25014] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101878558.979715.1359.nullmailer@x31.priv.netlab.jp>,

[#25015] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/12/01

まつもと ゆきひろです

[#25056] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/05

In article <1101888165.570792.4192.nullmailer@x31.priv.netlab.jp>,

[#25074] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/06

In article <1102293033.356112.2288.nullmailer@x31.priv.netlab.jp>,

[ruby-dev:24967] Re: sync and stdio buffering

From: Yukihiro Matsumoto <matz@...>
Date: 2004-11-27 03:13:47 UTC
List: ruby-dev #24967
まつもと ゆきひろです

In message "Re: [ruby-dev:24966] Re: sync and stdio buffering"
    on Sat, 27 Nov 2004 04:24:50 +0900, Tanaka Akira <akr@m17n.org> writes:

|sync なときには、rb_io_fwrite で fflush + write(2) で出力するというも
|のです。write(2) で直接出力すれば、データは stdio のバッファを経由しな
|いので、fflush で出力しようとして蒸発するのを避けられます。

十分に理解していないような気もするのですが、以下のようなコー
ドを想定しておられますか?

--- io.c	27 Nov 2004 02:18:12 -0000	1.331
+++ io.c	27 Nov 2004 03:12:40 -0000
@@ -400,10 +400,15 @@ rb_io_wait_writable(f)
 long
-rb_io_fwrite(ptr, len, f)
+io_fwrite(ptr, len, fptr)
     const char *ptr;
     long len;
-    FILE *f;
+    OpenFile *fptr;
 {
     long n, r;
+    FILE *f = GetWriteFile(fptr);
 
     if ((n = len) <= 0) return n;
+    if (fptr->mode & FMODE_SYNC) {
+	io_fflush(f, fptr);
+	return write(fileno(f), ptr, len);
+    }
 #if defined __human68k__
@@ -426,2 +431,3 @@ rb_io_fwrite(ptr, len, f)
 	    if (rb_io_wait_writable(fileno(f))) {
+		rb_io_check_closed(fptr);
 		clearerr(f);
@@ -436,2 +442,16 @@ rb_io_fwrite(ptr, len, f)
 
+long
+rb_io_fwrite(ptr, len, f)
+    const char *ptr;
+    long len;
+    FILE *f;
+{
+    OpenFile of;
+
+    of.f = f;
+    of.f2 = NULL;
+    of.mode = FMODE_WRITABLE;
+    return io_fwrite(ptr, len, &of);
+}
+
 /*
@@ -475,12 +495,8 @@ io_write(io, str)
     rb_io_check_writable(fptr);
-    f = GetWriteFile(fptr);
 
     rb_str_locktmp(str);
-    n = rb_io_fwrite(RSTRING(str)->ptr, RSTRING(str)->len, f);
+    n = io_fwrite(RSTRING(str)->ptr, RSTRING(str)->len, fptr);
     rb_str_unlocktmp(str);
     if (n == -1L) rb_sys_fail(fptr->path);
-    if (fptr->mode & FMODE_SYNC) {
-	io_fflush(f, fptr);
-    }
-    else {
+    if (!(fptr->mode & FMODE_SYNC)) {
 	fptr->mode |= FMODE_WBUF;

In This Thread