Deal with update `pintos' script.
authorBen Pfaff <blp@cs.stanford.edu>
Wed, 24 Nov 2004 00:31:39 +0000 (00:31 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Wed, 24 Nov 2004 00:31:39 +0000 (00:31 +0000)
grading/userprog/prep-disk
grading/vm/prep-disk

index 1d34e5fb1a340ecaac39c084dc3f7c4abeafce8f..f1b766c8614ebebf16d53dc32299d7f8d27bf091 100755 (executable)
@@ -2,6 +2,7 @@
 
 use strict;
 use Getopt::Long;
+use POSIX;
 
 my ($pintos) = "pintos";
 my ($os_disk) = "../../src/userprog/build/os.dsk";
@@ -33,7 +34,7 @@ if (! -e $os_disk) {
 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,
@@ -55,11 +56,12 @@ sub put_file {
     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";
+    WIFEXITED ($code) && WEXITSTATUS ($code) == $expect
+       or die "command failed\n";
 }
index 10afa8f5530a7d79c117124d2ef74fa85841769f..d6d85a24035886ff45477882873c49754a5a6920 100755 (executable)
@@ -2,6 +2,7 @@
 
 use strict;
 use Getopt::Long;
+use POSIX;
 
 my ($pintos) = "pintos";
 my ($os_disk) = "../../src/userprog/build/os.dsk";
@@ -27,7 +28,7 @@ if (! -e $os_disk) {
 our ($formatted) = 0;
 
 unlink $fs_disk;
-xsystem ("$pintos make-disk '$fs_disk' 2");
+xsystem (0, "$pintos make-disk '$fs_disk' 2");
 while (@ARGV) {
     put_file (shift (@ARGV));
 }
@@ -37,11 +38,13 @@ sub put_file {
     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";
 }