[#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:24896] mode for StringIO

From: nobu@...
Date: 2004-11-17 09:56:02 UTC
List: ruby-dev #24896
なかだです。

StringIO.newの第二引数は今のところStringでしか指定できませんが、
これをIO.new同様Fixnumも使えるようにしようかと思います。という
ことで、rb_io_modenum_flagsをexternにしたいのですがどうでしょう
か。


* io.c, rubyio.h (rb_io_modenum_flags): exported.

* ext/stringio/stringio.c (strio_initialize): allow Fixnum as mode.


Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.318
diff -U2 -p -d -r1.318 io.c
--- io.c	10 Nov 2004 07:16:24 -0000	1.318
+++ io.c	16 Nov 2004 07:29:11 -0000
@@ -2390,5 +2390,5 @@ rb_io_mode_flags(mode)
 }
 
-static int
+int
 rb_io_modenum_flags(mode)
     int mode;
Index: rubyio.h
===================================================================
RCS file: /cvs/ruby/src/ruby/rubyio.h,v
retrieving revision 1.29
diff -U2 -p -d -r1.29 rubyio.h
--- rubyio.h	29 Oct 2004 12:28:04 -0000	1.29
+++ rubyio.h	16 Nov 2004 07:29:10 -0000
@@ -66,4 +66,5 @@ long rb_io_fread _((char *, long, FILE *
 long rb_io_fwrite _((const char *, long, FILE *));
 int  rb_io_mode_flags _((const char*));
+int  rb_io_modenum_flags _((int));
 void rb_io_check_writable _((OpenFile*));
 void rb_io_check_readable _((OpenFile*));
Index: ext/stringio/stringio.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/stringio/stringio.c,v
retrieving revision 1.32
diff -U2 -p -d -r1.32 stringio.c
--- ext/stringio/stringio.c	16 Nov 2004 07:20:54 -0000	1.32
+++ ext/stringio/stringio.c	16 Nov 2004 07:24:27 -0000
@@ -202,5 +202,5 @@ strio_initialize(argc, argv, self)
     struct StringIO *ptr = check_strio(self);
     VALUE string, mode;
-    const char* m;
+    int trunc = Qfalse;
 
     if (!ptr) {
@@ -210,19 +210,21 @@ strio_initialize(argc, argv, self)
     switch (rb_scan_args(argc, argv, "02", &string, &mode)) {
       case 2:
-	StringValue(mode);
+	if (FIXNUM_P(mode)) {
+	    int flags = FIX2INT(mode);
+	    ptr->flags = rb_io_modenum_flags(flags);
+	    trunc = flags & O_TRUNC;
+	}
+	else {
+	    const char *m = StringValueCStr(mode);
+	    ptr->flags = rb_io_mode_flags(m);
+	    trunc = *m == 'w';
+	}
 	StringValue(string);
-	if (!(m = RSTRING(mode)->ptr)) m = "";
-	ptr->flags = rb_io_mode_flags(m);
 	if ((ptr->flags & FMODE_WRITABLE) && OBJ_FROZEN(string)) {
 	    errno = EACCES;
 	    rb_sys_fail(0);
 	}
-	switch (*m) {
-	  case 'a':
-	    ptr->flags |= FMODE_APPEND;
-	    break;
-	  case 'w':
+	if (trunc) {
 	    rb_str_resize(string, 0);
-	    break;
 	}
 	break;


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

In This Thread

Prev Next