lib/braid/operations.rb in realityforge-braid-0.9.6 vs lib/braid/operations.rb in realityforge-braid-0.9.7
- old
+ new
@@ -106,16 +106,21 @@
out, err = nil
status, pid = 0
log(cmd)
- if defined?(JRUBY_VERSION) || Gem.win_platform?
- Open3.popen3(cmd) do |stdin, stdout, stderr|
+ if USE_OPEN3
+ status = nil
+ Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thread|
+ stdin.close
out = stdout.read
err = stderr.read
+ # Under earlier jrubies this is not correctly passed so add in check
+ status = wait_thread.value if wait_thread # Process::Status object returned.
end
- status = $?.exitstatus
+ # Handle earlier jrubies such as 1.6.7.2
+ status = $?.exitstatus if status.nil?
else
status = Open4.popen4(cmd) do |pid, stdin, stdout, stderr|
out = stdout.read
err = stderr.read
end.exitstatus
@@ -289,16 +294,19 @@
def apply(diff, *args)
status, err = nil, nil
command = "git apply --index --whitespace=nowarn #{args.join(' ')} -"
- if defined?(JRUBY_VERSION) || Gem.win_platform?
- Open3.popen3(command) do |stdin, stdout, stderr|
+ if USE_OPEN3
+ Open3.popen3(command) do |stdin, stdout, stderr, wait_thread|
stdin.puts(diff)
stdin.close
err = stderr.read
+ # Under earlier jrubies this is not correctly passed so add in check
+ status = wait_thread.value if wait_thread # Process::Status object returned.
end
- status = $?.exitstatus
+ # Handle earlier jrubies such as 1.6.7.2
+ status = $?.exitstatus if status.nil?
else
status = Open4.popen4(command) do |pid, stdin, stdout, stderr|
stdin.puts(diff)
stdin.close
err = stderr.read