use strict;
use Getopt::Long;
+use POSIX;
my ($pintos) = "pintos";
my ($os_disk) = "../../src/userprog/build/os.dsk";
our ($formatted) = 0;
unlink $fs_disk;
-xsystem ("$pintos make-disk '$fs_disk' 2");
+xsystem (0, "$pintos make-disk '$fs_disk' 2");
put_file ("$test");
put_file ("sample.txt")
if grep ($_ eq $test,
read-normal read-bad-ptr read-boundary read-zero
write-normal write-bad-ptr write-boundary write-zero
multi-child-fd));
-put_file ("child-simple") if $test eq 'exec-once' or $test eq 'exec-multiple';
+put_file ("child-simple")
+ if grep ($_ eq $test,
+ qw (exec-once exec-multiple
+ join-simple join-twice));
put_file ("child-arg") if $test eq 'exec-arg';
put_file ("child-close") if $test eq 'multi-child-fd';
+put_file ("child-bad") if $test eq 'join-killed';
sub put_file {
my ($fn) = @_;
my ($cmd) = "$pintos -v --os-disk='$os_disk' --fs-disk='$fs_disk' put";
$cmd .= " -f", $formatted = 1 if !$formatted;
$cmd .= " '$fn'";
- xsystem ($cmd);
+ xsystem (1, $cmd);
}
sub xsystem {
- my ($cmd) = @_;
+ my ($expect, $cmd) = @_;
print "$cmd\n";
- system ($cmd) == 0 || die "command failed\n";
+ my ($code) = system ($cmd);
+ WIFEXITED ($code) && WEXITSTATUS ($code) == $expect
+ or die "command failed\n";
}