summaryrefslogtreecommitdiff
path: root/contrib/diff-highlight
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2014-11-04 20:01:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-11-04 21:18:35 (GMT)
commit251e7dad517bd369387c4dedfe77b380f025e0f3 (patch)
treeb7ba495d93e721ac136eac5a5f421b7460e2981c /contrib/diff-highlight
parenteeff891ac756fd97a05476446f15269b714ce4cc (diff)
downloadgit-251e7dad517bd369387c4dedfe77b380f025e0f3.zip
git-251e7dad517bd369387c4dedfe77b380f025e0f3.tar.gz
git-251e7dad517bd369387c4dedfe77b380f025e0f3.tar.bz2
diff-highlight: exit when a pipe is broken
While using diff-highlight with other tools, I have discovered that Python ignores SIGPIPE by default. Unfortunately, this also means that tools attempting to launch a pager under Python--and don't realize this is happening--means that the subprocess inherits this setting. In this case, it means diff-highlight will be launched with SIGPIPE being ignored. Let's work with those broken scripts by restoring the default SIGPIPE handler. Signed-off-by: John Szakmeister <john@szakmeister.net> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib/diff-highlight')
-rwxr-xr-xcontrib/diff-highlight/diff-highlight4
1 files changed, 4 insertions, 0 deletions
diff --git a/contrib/diff-highlight/diff-highlight b/contrib/diff-highlight/diff-highlight
index c4404d4..69a652e 100755
--- a/contrib/diff-highlight/diff-highlight
+++ b/contrib/diff-highlight/diff-highlight
@@ -14,6 +14,10 @@ my @removed;
my @added;
my $in_hunk;
+# Some scripts may not realize that SIGPIPE is being ignored when launching the
+# pager--for instance scripts written in Python.
+$SIG{PIPE} = 'DEFAULT';
+
while (<>) {
if (!$in_hunk) {
print;