about summary refs log tree commit diff
path: root/third_party/git/t/test-terminal.perl
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/t/test-terminal.perl
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/t/test-terminal.perl')
-rwxr-xr-xthird_party/git/t/test-terminal.perl105
1 files changed, 0 insertions, 105 deletions
diff --git a/third_party/git/t/test-terminal.perl b/third_party/git/t/test-terminal.perl
deleted file mode 100755
index 1bcf01a9a42a..000000000000
--- a/third_party/git/t/test-terminal.perl
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/perl
-use 5.008;
-use strict;
-use warnings;
-use IO::Pty;
-use File::Copy;
-
-# Run @$argv in the background with stdio redirected to $in, $out and $err.
-sub start_child {
-	my ($argv, $in, $out, $err) = @_;
-	my $pid = fork;
-	if (not defined $pid) {
-		die "fork failed: $!"
-	} elsif ($pid == 0) {
-		open STDIN, "<&", $in;
-		open STDOUT, ">&", $out;
-		open STDERR, ">&", $err;
-		close $in;
-		close $out;
-		exec(@$argv) or die "cannot exec '$argv->[0]': $!"
-	}
-	return $pid;
-}
-
-# Wait for $pid to finish.
-sub finish_child {
-	# Simplified from wait_or_whine() in run-command.c.
-	my ($pid) = @_;
-
-	my $waiting = waitpid($pid, 0);
-	if ($waiting < 0) {
-		die "waitpid failed: $!";
-	} elsif ($? & 127) {
-		my $code = $? & 127;
-		warn "died of signal $code";
-		return $code + 128;
-	} else {
-		return $? >> 8;
-	}
-}
-
-sub xsendfile {
-	my ($out, $in) = @_;
-
-	# Note: the real sendfile() cannot read from a terminal.
-
-	# 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: $!";
-}
-
-sub copy_stdin {
-	my ($in) = @_;
-	my $pid = fork;
-	if (!$pid) {
-		xsendfile($in, \*STDIN);
-		exit 0;
-	}
-	close($in);
-	return $pid;
-}
-
-sub copy_stdio {
-	my ($out, $err) = @_;
-	my $pid = fork;
-	defined $pid or die "fork failed: $!";
-	if (!$pid) {
-		close($out);
-		xsendfile(\*STDERR, $err);
-		exit 0;
-	}
-	close($err);
-	xsendfile(\*STDOUT, $out);
-	finish_child($pid) == 0
-		or exit 1;
-}
-
-if ($#ARGV < 1) {
-	die "usage: test-terminal program args";
-}
-$ENV{TERM} = 'vt100';
-my $parent_in = new IO::Pty;
-my $parent_out = new IO::Pty;
-my $parent_err = new IO::Pty;
-$parent_in->set_raw();
-$parent_out->set_raw();
-$parent_err->set_raw();
-$parent_in->slave->set_raw();
-$parent_out->slave->set_raw();
-$parent_err->slave->set_raw();
-my $pid = start_child(\@ARGV, $parent_in->slave, $parent_out->slave, $parent_err->slave);
-close $parent_in->slave;
-close $parent_out->slave;
-close $parent_err->slave;
-my $in_pid = copy_stdin($parent_in);
-copy_stdio($parent_out, $parent_err);
-my $ret = finish_child($pid);
-# If the child process terminates before our copy_stdin() process is able to
-# write all of its data to $parent_in, the copy_stdin() process could stall.
-# Send SIGTERM to it to ensure it terminates.
-kill 'TERM', $in_pid;
-finish_child($in_pid);
-exit($ret);