[#28942] FUNC_CDECL/FUNC_STDCALL are not defined? — KIMURA Koichi <kimura.koichi@...>

木村です。

24 messages 2006/07/03
[#28943] Re: FUNC_CDECL/FUNC_STDCALL are not defined? — "U.Nakamura" <usa@...> 2006/07/03

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

[#28945] Re: FUNC_CDECL/FUNC_STDCALL are not defined? — Takaaki Tateishi <ttate@...> 2006/07/03

U.Nakamura wrote:

[#28946] Re: FUNC_CDECL/FUNC_STDCALL are not defined? — "U.Nakamura" <usa@...> 2006/07/03

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

[#29006] block wrapper — Tanaka Akira <akr@...>

以前、[ruby-dev:28747] の pp.rb の問題を解決するのに

44 messages 2006/07/10
[#29007] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2006/07/10

まつもと ゆきひろです

[#29008] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/10

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

[#29009] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2006/07/10

まつもと ゆきひろです

[#29010] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/10

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

[#29022] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/12

In article <87psgd8qb2.fsf@fsij.org>,

[#29078] Re: block wrapper — Tanaka Akira <akr@...> 2006/07/19

In article <87r70rdpeg.fsf@fsij.org>,

[#29466] Re: block wrapper — Tanaka Akira <akr@...> 2006/09/04

In article <871wshddvn.fsf@fsij.org>,

[#29584] Re: block wrapper — Tanaka Akira <akr@...> 2006/09/16

In article <87ac5g5a7i.fsf@fsij.org>,

[#29616] Re: block wrapper — Tanaka Akira <akr@...> 2006/09/26

In article <8764foo7s7.fsf@fsij.org>,

[#30777] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/11

In article <87venar27i.fsf@fsij.org>,

[#30778] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/11

まつもと ゆきひろです

[#30780] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/12

In article <1178883053.645482.13087.nullmailer@x31.netlab.jp>,

[#30781] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/12

まつもと ゆきひろです

[#30840] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/30

In article <1178978140.846301.8164.nullmailer@x31.netlab.jp>,

[#30843] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/30

まつもと ゆきひろです

[#30848] Re: block wrapper — SASADA Koichi <ko1@...> 2007/05/31

 ささだです。

[#30850] Re: block wrapper — Yukihiro Matsumoto <matz@...> 2007/05/31

まつもと ゆきひろです

[#30855] Re: block wrapper — Tanaka Akira <akr@...> 2007/05/31

In article <E1HtaMS-00041i-6U@x31>,

[#29013] problem in bignorm — "U.Nakamura" <usa@...>

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

14 messages 2006/07/10
[#29016] Re: problem in bignorm — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[#29018] Re: problem in bignorm — "U.Nakamura" <usa@...> 2006/07/11

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

[#29019] Re: problem in bignorm — "U.Nakamura" <usa@...> 2006/07/11

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

[#29038] irb completion — Tadayoshi Funaba <tadf@...>

ふなばです。

22 messages 2006/07/17
[#29063] Re: irb completion — keiju@... (石塚圭樹) 2006/07/18

けいじゅ@いしつかです.

[#29064] Re: irb completion — Yukihiro Matsumoto <matz@...> 2006/07/18

まつもと ゆきひろです

[#29070] Re: irb completion — Ryan Davis <ryand-ruby@...> 2006/07/18

[#29093] Re: [ruby-cvs:17195] ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Tanaka Akira <akr@...>

In article <20060720173258.5D4BAC6781@lithium.ruby-lang.org>,

14 messages 2006/07/20
[#29096] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Yukihiro Matsumoto <matz@...> 2006/07/20

まつもと ゆきひろです

[#29097] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Tanaka Akira <akr@...> 2006/07/20

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

[#29098] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Yukihiro Matsumoto <matz@...> 2006/07/20

まつもと ゆきひろです

[#29099] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Tanaka Akira <akr@...> 2006/07/20

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

[#29101] Re: ruby/test/rss: * object.c (rb_mod_attr): make Module#attr to be an alias to — Yukihiro Matsumoto <matz@...> 2006/07/21

まつもと ゆきひろです

[#29148] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — WATANABE Hirofumi <eban@...>

わたなべです。

31 messages 2006/07/27
[#29149] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/07/27

成瀬です。

[#29151] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/07/27

まつもと ゆきひろです

[#29152] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — URABE Shyouhei <root@...> 2006/07/27

卜部です

[#29153] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/07/27

まつもと ゆきひろです

[#29155] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — URABE Shyouhei <root@...> 2006/07/27

卜部です。

[#29157] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/07/27

成瀬です。

[#29159] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/07/27

まつもと ゆきひろです

[#29440] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/09/03

成瀬です

[#29462] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/04

まつもと ゆきひろです

[#29467] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/09/04

成瀬です。

[#29472] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/04

まつもと ゆきひろです

[#29483] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — "NARUSE, Yui" <naruse@...> 2006/09/05

成瀬です。

[#29488] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29494] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Tadayoshi Funaba <tadf@...> 2006/09/05

ふなばです。

[#29497] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29513] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Tadayoshi Funaba <tadf@...> 2006/09/06

> 郵便局の消印は採用できないんですが、なにが良いと思いますか。

[#29516] Re: [ruby-cvs:17256] ruby, ruby: * time.c (time_to_s): generate RFC822 style date string. — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[ruby-dev:28936] Re: IO.popen("echo a") clear O_APPEND of other fds.

From: nobu@...
Date: 2006-07-03 02:08:26 UTC
List: ruby-dev #28936
なかだです。

At Mon, 3 Jul 2006 02:34:14 +0900,
Tanaka Akira wrote in [ruby-dev:28933]:
> この出来の悪さを Ruby レベルでどうにかするために
> IO#file_flags を GETFL,
> IO#file_flags= を SETFL にして、
> io.file_flags |= File::NONBLOCK
> とできるようにしたらどうか、と考えたことはあります。
> 
> 同様に
> IO#descriptor_flags を GETFD,
> IO#descriptor_flags= を SETFD にして、
> io.descriptor_flags |= Fcntl::FD_CLOEXEC
> と出来るようにする、ということも考えられます。

IO#close_on_exec のように個別にしたほうが、file_flagsと
descriptor_flagsのどっちだっけ、とか悩まずにすむんじゃないでしょ
うか。それとも早すぎる怠惰化?

> ... と思って考えてみると、IO#file_flags が Windows で動かな
> いからポータビリティに難あり、かな。

なけりゃないで未定義でいいんでは。


* io.c (rb_io_cloexec_get, rb_io_cloexec_set): new methods, get/set
  FD_CLOEXEC flag.


Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.411
diff -p -u -2 -r1.411 io.c
--- io.c	2 Jul 2006 02:25:11 -0000	1.411
+++ io.c	3 Jul 2006 01:17:08 -0000
@@ -2693,4 +2693,56 @@ rb_io_modenum_mode(int flags)
 }
 
+#ifdef FD_CLOEXEC
+/*
+ *  call-seq:
+ *     ios.close_on_exec    => true/false
+ *
+ *  Returns true if *ios* will be closed on +exec+.
+ *
+ *    def fd(io)
+ *      path = "/proc/self/fd/#{io.fileno.to_s}"
+ *      system("readlink", path) or puts "#{path} is not opened"
+ *    end
+ *
+ *    f = open("/dev/null")
+ *    fd(f)			# => /dev/null
+ *    f.close_on_exec = true
+ *    fd(f)			# => /proc/self/fd/3 is not opened
+ */
+
+static VALUE
+rb_io_cloexec_get(VALUE io)
+{
+    OpenFile *fptr;
+    int flag;
+
+    GetOpenFile(io, fptr);
+    flag = fcntl(fptr->fd, F_GETFD);
+    if (flag == -1) rb_sys_fail(0);
+    return (flag & FD_CLOEXEC) ? Qtrue : Qfalse;
+}
+
+static VALUE
+rb_io_cloexec_set(VALUE io, VALUE val)
+{
+    OpenFile *fptr;
+    int oflag, flag;
+
+    GetOpenFile(io, fptr);
+    flag = fcntl(fptr->fd, F_GETFD);
+    if (flag == -1) rb_sys_fail(0);
+    oflag = flag;
+    if (RTEST(val)) {
+	flag |= FD_CLOEXEC;
+    }
+    else {
+	flag &= ~FD_CLOEXEC;
+    }
+    if (oflag != flag && fcntl(fptr->fd, F_SETFD, flag) == -1)
+	rb_sys_fail(0);
+    return (oflag & FD_CLOEXEC) ? Qtrue : Qfalse;
+}
+#endif
+
 static int
 rb_sysopen(char *fname, int flags, unsigned int mode)
@@ -5696,4 +5748,8 @@ Init_IO(void)
     rb_define_method(rb_cIO, "eof", rb_io_eof, 0);
     rb_define_method(rb_cIO, "eof?", rb_io_eof, 0);
+#ifdef FD_CLOEXEC
+    rb_define_method(rb_cIO, "close_on_exec", rb_io_cloexec_get, 0);
+    rb_define_method(rb_cIO, "close_on_exec=", rb_io_cloexec_set, 1);
+#endif
 
     rb_define_method(rb_cIO, "close", rb_io_close_m, 0);


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

In This Thread