# File lib/grit/jruby.rb, line 9 def popen4(*argv) env = (argv.shift if argv[0].is_a?(Hash)) || {} opt = (argv.pop if argv[-1].is_a?(Hash)) || {} # emulate :chdir option if opt[:chdir] previous_dir = Dir.pwd Dir.chdir(opt[:chdir]) else previous_dir = nil end # emulate :env option if env.size > 0 previous_env = ENV ENV.merge!(env) else previous_env = nil end pid, stdin, stdout, stderr = IO.popen4(*argv) ensure ENV.replace(previous_env) if previous_env Dir.chdir(previous_dir) if previous_dir end