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;hp=b9713669e0613652b1ff53601345decf5584ab23 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; }