X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=grading%2Flib%2FPintos%2FGrading.pm;fp=grading%2Flib%2FPintos%2FGrading.pm;h=30ac7101493b473bf96a316f0268e986f64581fb;hp=bf6099f74e9540eb8fe468ae2c44a099085b8ac2;hb=2969f4df6a95b37e05ad6aa562ae82206b646eb0;hpb=6c75d304d238c3dfdd2aef62decd60a16bb64c7d diff --git a/grading/lib/Pintos/Grading.pm b/grading/lib/Pintos/Grading.pm index bf6099f..30ac710 100644 --- a/grading/lib/Pintos/Grading.pm +++ b/grading/lib/Pintos/Grading.pm @@ -316,7 +316,13 @@ sub xsystem { open (STDOUT, ">output/$log.out"); open (STDERR, ">output/$log.err"); } - exec ($command); + chdir $options{CHDIR} or die "$options{CHDIR}: chdir: $!\n" + if defined ($options{CHDIR}); + if (!defined ($options{EXEC})) { + exec ($command); + } else { + exec (@{$options{EXEC}}); + } exit (-1); } waitpid ($pid, 0); @@ -399,7 +405,8 @@ sub get_test_result { sub run_pintos { my ($cmd_line, %args) = @_; - my ($retval) = xsystem ($cmd_line, %args); + unshift (@$cmd_line, 'pintos'); + my ($retval) = xsystem (join (' ', @$cmd_line), %args, EXEC => $cmd_line); return 'ok' if $retval eq 'ok'; if ($retval eq 'timeout') { my ($msg) = "Timed out after $args{TIMEOUT} seconds";