Windows subprocess IO works again. [GH-721]

This commit is contained in:
Mitchell Hashimoto 2012-02-10 00:53:22 -08:00
parent 600e8ae036
commit 0ba3824106
2 changed files with 19 additions and 5 deletions

View File

@ -1,3 +1,8 @@
## 0.9.7 (unreleased)
- Fix regression where all subprocess IO simply didn't work with
Windows. [GH-721]
## 0.9.6 (February 7, 2012)
- Fix strange issue with inconsistent childprocess reads on JRuby. [GH-711]

View File

@ -64,6 +64,14 @@ module Vagrant
# Make sure the stdin does not buffer
process.io.stdin.sync = true
if RUBY_PLATFORM != "java"
# On Java, we have to close after. See down the method...
# Otherwise, we close the writers right here, since we're
# not on the writing side.
stdout_writer.close
stderr_writer.close
end
# Create a dictionary to store all the output we see.
io_data = { :stdout => "", :stderr => "" }
@ -136,11 +144,12 @@ module Vagrant
yield io_name, extra_data if block_given?
end
# Close the writer pipes. Note that we do this so late (after the process
# has quit) to work around an issue with childprocess and JRuby. It is
# bizarre but it works.
stdout_writer.close
stderr_writer.close
if RUBY_PLATFORM == "java"
# On JRuby, we need to close the writers after the process,
# for some reason. See GH-711.
stdout_writer.close
stderr_writer.close
end
# Return an exit status container
return Result.new(process.exit_code, io_data[:stdout], io_data[:stderr])