lib/autobuild/subcommand.rb in autobuild-1.16.0 vs lib/autobuild/subcommand.rb in autobuild-1.17.0
- old
+ new
@@ -346,16 +346,21 @@
cwrite.write([CONTROL_UNEXPECTED].pack('I'))
exit(100)
end
end
+ readbuffer = StringIO.new
+
# Feed the input
if !input_streams.empty?
pread.close
begin
input_streams.each do |instream|
- instream.each_line { |line| pwrite.write(line) }
+ instream.each_line do |line|
+ readbuffer.write(outread.readpartial(128)) while IO.select([outread], nil, nil, 0)
+ pwrite.write(line)
+ end
end
rescue Errno::ENOENT => e
raise Failed.new(nil, false),
"cannot open input files: #{e.message}", retry: false
end
@@ -385,9 +390,17 @@
end
# If the caller asked for process output, provide it to him
# line-by-line.
outwrite.close
+
+ if !input_streams.empty?
+ readbuffer.write(outread.read)
+ readbuffer.seek(0)
+ outread.close
+ outread = readbuffer
+ end
+
outread.each_line do |line|
line.force_encoding(options[:encoding])
line = line.chomp
subcommand_output << line