#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by git-commit-script with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, make this file executable.

# This is slightly modified from Andrew Morton's Perfect Patch.
# Lines you introduce should not have trailing whitespace.
# Also check for an indentation that has SP before a TAB.
perl -e '
    my $fh;
    my $found_bad = 0;
    my $filename;
    my $reported_filename = "";
    my $lineno;
    sub bad_line {
	my ($why, $line) = @_;
	if (!$found_bad) {
	    print STDERR "*\n";
	    print STDERR "* You have some suspicious patch lines:\n";
	    print STDERR "*\n";
	    $found_bad = 1;
	}
	if ($reported_filename ne $filename) {
	    print STDERR "* In $filename\n";
	    $reported_filename = $filename;
	}
	print STDERR "* $why (line $lineno)\n";
	print STDERR "$filename:$lineno:$line\n";
    }
    open $fh, "-|", qw(git-diff-cache -p -M --cached HEAD);
    while (<$fh>) {
	if (m|^diff --git a/(.*) b/\1$|) {
	    $filename = $1;
	    next;
	}
	if (/^@@ -\S+ \+(\d+)/) {
	    $lineno = $1 - 1;
	    next;
	}
	if (/^ /) {
	    $lineno++;
	    next;
	}
	if (s/^\+//) {
	    $lineno++;
	    chomp;
	    if (/\s$/) {
		bad_line("trailing whitespace", $_);
	    }
	    if (/^\s* 	/) {
		bad_line("indent SP followed by a TAB", $_);
	    }
	}
    }
    exit($found_bad);
'

