From 5869de449fe535321a1f43d3ca59c22cdf610e9e Mon Sep 17 00:00:00 2001 From: mame Date: Fri, 9 Apr 2010 15:07:34 +0000 Subject: * ext/pty/lib/expect.rb: preserve buffer read, instead of discard. based on a patch from Luiz Angelo Daros de Luca in [ruby-core:23464]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ ext/pty/lib/expect.rb | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee10726b23..a227b8404f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Apr 10 00:01:51 2010 Yusuke Endoh + + * ext/pty/lib/expect.rb: preserve buffer read, instead of discard. + based on a patch from Luiz Angelo Daros de Luca in + [ruby-core:23464]. + Fri Apr 9 23:58:58 2010 Yusuke Endoh * ext/pty/lib/expect.rb: raise an error when argument is unexpected diff --git a/ext/pty/lib/expect.rb b/ext/pty/lib/expect.rb index 52396d90bd..54cf709ee2 100644 --- a/ext/pty/lib/expect.rb +++ b/ext/pty/lib/expect.rb @@ -17,12 +17,17 @@ class IO else raise TypeError, "unsupported pattern class: #{pattern.class}" end + @unusedBuf ||= '' while true - if !IO.select([self],nil,nil,timeout) or eof? then + if not @unusedBuf.empty? + c = @unusedBuf.slice!(0).chr + elsif !IO.select([self],nil,nil,timeout) or eof? then result = nil + @unusedBuf = buf break + else + c = getc.chr end - c = getc.chr buf << c if $expect_verbose STDOUT.print c -- cgit v1.2.3