まつもと ゆきひろです

ruby-bugs PR#1211によればFreeBSDではptyが正しく動いていない
ようです。どなたか検証していただけませんか?

具体的にはext/pty/expect_sample.rbが動かないそうです(ただし、
ftp.netlab.co.jpはもうないので以下のパッチを当てる方が良いで
しょう)。

環境は

Version: 1.8.0 2003-09-09
OS: FreeBSD 5

だそうです。

うーん、Linuxしかない環境も考え物だな。

--- expect_sample.rb	13 Aug 1999 05:37:50 -0000	1.2
+++ expect_sample.rb	4 Nov 2003 23:22:21 -0000
@@ -6,3 +6,3 @@
 #  This program reports the latest version of ruby interpreter
-#  by connecting to ftp server at netlab.co.jp.
+#  by connecting to ftp server at ruby-lang.org.
 #
@@ -12,7 +12,6 @@ require 'expect'
 fnames = []
-PTY.spawn("ftp ftp.netlab.co.jp") do
-  |r_f,w_f,pid|
+PTY.spawn("ftp ftp.ruby-lang.org") do |r_f,w_f,pid|
   w_f.sync = true
   
-  $expect_verbose = true
+  $expect_verbose = false
   
@@ -33,6 +32,6 @@ PTY.spawn("ftp ftp.netlab.co.jp") do
   end
-  r_f.expect("ftp> ") do
-    w_f.print "cd pub/lang/ruby\n"
+  r_f.expect("> ") do
+    w_f.print "cd pub/ruby\n"
   end
-  r_f.expect("ftp> ") do
+  r_f.expect("> ") do
     w_f.print "dir\n"
@@ -40,3 +39,3 @@ PTY.spawn("ftp ftp.netlab.co.jp") do
   
-  r_f.expect("ftp> ") do |output|
+  r_f.expect("> ") do |output|
     for x in output[0].split("\n")