[PATCH squash] Simplify test-terminal.perl
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Feb 20, 2010, 09:48 UTC
- Message-ID
- <20100220094820.GA32456@progeny.tock>
- In-Reply-To
- <20100220085025.GA26788@progeny.tock>
The File::Copy module is included with perl (since version 5.002, 1995), so this simplification comes for free. It does not make the test noticeably faster or slower.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> --- Jonathan Nieder wrote:
> it is much slower than the C version.
I take that back. The perl version takes roughly 3.7 s and the C version 3.4 s here (both with hot cache). Noticeable alone, but a tiny blip in the context of a full test run.
Sorry to mislead.
t/t7006/test-terminal.perl | 26 +++++++------------------- 1 files changed, 7 insertions(+), 19 deletions(-)
diff --git a/t/t7006/test-terminal.perl b/t/t7006/test-terminal.perl index b51cfc6..73ff809 100755 --- a/t/t7006/test-terminal.perl +++ b/t/t7006/test-terminal.perl @@ -2,8 +2,9 @@ use strict; use warnings; use IO::Pty; +use File::Copy; -# Fork and execute @$argv with stdout redirected to $out. +# Run @$argv in the background with stdout redirected to $out. sub start_child { my ($argv, $out) = @_; my $pid = fork; @@ -37,26 +38,13 @@ sub finish_child { sub xsendfile { my ($out, $in) = @_; - my $buf; - # Note: the real sendfile() cannot read from a terminal. - for (;;) { - my $n = sysread $in, $buf, 4096; - # It is unspecified by POSIX whether reads - # from a disconnected terminal will return - # EIO (as in AIX 4.x, IRIX, and Linux) or - # end-of-file. Either is fine. - if (!defined($n) && $!{EIO}) { - return; - } elsif (!defined($n)) { - die "cannot read from child: $!"; - } elsif ($n == 0) { - return; - } else { - print $out $buf or die "write error: $!"; - } - } + # It is unspecified by POSIX whether reads + # from a disconnected terminal will return + # EIO (as in AIX 4.x, IRIX, and Linux) or + # end-of-file. Either is fine. + copy($in, $out, 4096) or $!{EIO} or die "cannot copy from child: $!"; } if ($#ARGV < 1) {
-- 1.7.0