[前][次][番号順一覧][スレッド一覧]

ruby-changes:9308

From: akr <ko1@a...>
Date: Wed, 17 Dec 2008 19:38:36 +0900 (JST)
Subject: [ruby-changes:9308] Ruby:r20846 (trunk): * ext/pty/extconf.rb: check util.h for OpenBSD.

akr	2008-12-17 19:38:19 +0900 (Wed, 17 Dec 2008)

  New Revision: 20846

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20846

  Log:
    * ext/pty/extconf.rb: check util.h for OpenBSD.
    * ext/pty/pty.c: include util.h if available.  fix variable name.

  Modified files:
    trunk/ChangeLog
    trunk/ext/pty/extconf.rb
    trunk/ext/pty/pty.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 20845)
+++ ChangeLog	(revision 20846)
@@ -1,3 +1,9 @@
+Wed Dec 17 19:37:30 2008  Tanaka Akira  <akr@f...>
+
+	* ext/pty/extconf.rb: check util.h for OpenBSD.
+
+	* ext/pty/pty.c: include util.h if available.  fix variable name.
+
 Wed Dec 17 19:23:28 2008  Keiju Ishitsuka  <keiju@r...>
 
 	* lib/matrix.rb: shut up warning. [ruby-dev:37481] [Bug #899]
Index: ext/pty/extconf.rb
===================================================================
--- ext/pty/extconf.rb	(revision 20845)
+++ ext/pty/extconf.rb	(revision 20846)
@@ -4,6 +4,7 @@
   have_header("sys/stropts.h")
   have_func("setresuid")
   have_header("libutil.h")
+  have_header("util.h") # OpenBSD openpty
   have_header("pty.h")
   have_library("util", "openpty")
   if have_func("posix_openpt") or
Index: ext/pty/pty.c
===================================================================
--- ext/pty/pty.c	(revision 20845)
+++ ext/pty/pty.c	(revision 20846)
@@ -16,6 +16,9 @@
 #ifdef HAVE_LIBUTIL_H
 #include	<libutil.h>
 #endif
+#ifdef HAVE_UTIL_H
+#include	<util.h>
+#endif
 #ifdef HAVE_PTY_H
 #include	<pty.h>
 #endif
@@ -330,7 +333,7 @@
 	if (!fail) return -1;
 	rb_raise(rb_eRuntimeError, "openpty() failed");
     }
-    if (no_mesg(slavedevice, nomesg) == -1) {
+    if (no_mesg(SlaveName, nomesg) == -1) {
 	if (!fail) return -1;
 	rb_raise(rb_eRuntimeError, "can't chmod slave pty");
     }
@@ -448,6 +451,21 @@
  * master_io and slave_file is closed when return if they are not closed.
  *
  * The filename of the slave is slave_file.path.
+ *
+ *   # make cut's stdout line buffered.
+ *   # if IO.pipe is used instead of PTY.open,
+ *   # this deadlocks because cut's stdout will be fully buffered.
+ *   m, s = PTY.open 
+ *   system("stty raw", :in=>s) # disable newline conversion.
+ *   r, w = IO.pipe
+ *   pid = spawn("cut -c 3-8", :in=>r, :out=>s)
+ *   r.close
+ *   s.close
+ *   w.puts "foo bar baz"      #=> "o bar \n"
+ *   p m.gets
+ *   w.puts "hoge fuga moge"   #=> "ge fug\n"
+ *   p m.gets
+ *
  */
 static VALUE
 pty_open(VALUE klass)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]