diff options
author | John Szakmeister <john@szakmeister.net> | 2014-11-04 15:01:12 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-11-04 13:18:35 -0800 |
commit | 251e7dad517bd369387c4dedfe77b380f025e0f3 (patch) | |
tree | b7ba495d93e721ac136eac5a5f421b7460e2981c | |
parent | git-tag.txt: Add a missing hyphen to `-s` (diff) | |
download | tgif-251e7dad517bd369387c4dedfe77b380f025e0f3.tar.xz |
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>
-rwxr-xr-x | contrib/diff-highlight/diff-highlight | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/contrib/diff-highlight/diff-highlight b/contrib/diff-highlight/diff-highlight index c4404d49c9..69a652e7b2 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; |