[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>

Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)

12 messages 2010/07/02

[ruby-dev:41791] [Feature:trunk] IO::NULL; null device path name

From: Nobuyoshi Nakada <nobu@...>
Date: 2010-07-03 02:08:26 UTC
List: ruby-dev #41791
なかだです。

IO::NULL を追加するのはどうでしょうか。


diff --git a/io.c b/io.c
index 05b2d45..3793ae5 100644
--- a/io.c
+++ b/io.c
@@ -9623,6 +9623,18 @@ rb_get_argv(void)
     return ARGF.argv;
 }
 
+static const char null_device[] =
+#if defined DOSISH
+    "NUL"
+#elif defined AMIGA || defined __amigaos__
+    "NIL"
+#elif defined __VMS
+    "NL:"
+#else
+    "/dev/null"
+#endif
+    ;
+
 /*
  * Document-class: IOError
  *
@@ -9956,6 +9968,8 @@ Init_IO(void)
     rb_define_method(rb_cIO, "autoclose?", rb_io_autoclose_p, 0);
     rb_define_method(rb_cIO, "autoclose=", rb_io_set_autoclose, 1);
 
+    rb_define_const(rb_cIO, "NULL", rb_obj_freeze(rb_usascii_str_new2(null_device)));
+
     rb_define_variable("$stdin", &rb_stdin);
     rb_stdin = prep_stdio(stdin, FMODE_READABLE, rb_cIO, "<STDIN>");
     rb_define_hooked_variable("$stdout", &rb_stdout, 0, stdout_setter);


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

In This Thread

Prev Next