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/