From: Ben Pfaff Date: Thu, 7 Jan 2010 17:26:11 +0000 (-0800) Subject: pintos: Make sure to print buffered data at end of input. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=commitdiff_plain;h=2026ecceb129b851bd4f1573f7627a50d51e89b5 pintos: Make sure to print buffered data at end of input. Here, $buf might have some data in it that has not yet been printed, but we were discarding it (and trying to read more) without printing it. (In Perl, "do" ensures that the inner block runs at least once; without "do" the condition is evaluated first.) --- diff --git a/src/utils/pintos b/src/utils/pintos index 1abd2ed..909df83 100755 --- a/src/utils/pintos +++ b/src/utils/pintos @@ -819,7 +819,7 @@ sub xsystem { for (;;) { if (waitpid ($pid, WNOHANG) != 0) { # Subprocess died. Pass through any remaining data. - print $buf while sysread ($in, $buf, 4096) > 0; + do { print $buf } while sysread ($in, $buf, 4096) > 0; last; }