diff options
Diffstat (limited to 'lib/alaveteli_external_command.rb')
-rw-r--r-- | lib/alaveteli_external_command.rb | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/alaveteli_external_command.rb b/lib/alaveteli_external_command.rb index 5f8214900..fc8e31368 100644 --- a/lib/alaveteli_external_command.rb +++ b/lib/alaveteli_external_command.rb @@ -36,21 +36,30 @@ module AlaveteliExternalCommand if opts.has_key? :memory_limit xc.memory_limit = opts[:memory_limit] end + + xc.run(opts[:stdin_string] || "", opts[:env] || {}) if !xc.exited # Crash or timeout - $stderr.puts("#{program_name} #{args.join(' ')}:exited abnormally") + if xc.timed_out + $stderr.puts(%Q[Command "#{program_name} #{args.join(' ')}" timed out at #{opts[:timeout]}s]) + else + $stderr.puts(%Q[Command ""#{program_name} #{args.join(' ')}" exited abnormally]) + end + $stderr.print(xc.err) return nil + elsif xc.status != 0 # Error - $stderr.puts("Error from #{program_name} #{args.join(' ')}:") + $stderr.puts(%Q[Error from command "#{program_name} #{args.join(' ')}":]) $stderr.print(xc.err) return nil else if opts.has_key? :append_to opts[:append_to] << "\n\n" else + return xc.out end end |