+sub git_diff {
+ my $old_name = shift;
+ my $new_name = shift;
+ my $old = shift;
+ my $new = shift;
+
+ my $label_old = "/dev/null";
+ my $label_new = "/dev/null";
+ my $tmp_old = "/dev/null";
+ my $tmp_new = "/dev/null";
+
+ if ($old ne "") {
+ open my $fd2, "> $gittmp/$old";
+ open my $fd, "-|", "$gitbin/cat-file", "blob", $old;
+ while (my $line = <$fd>) {
+ print $fd2 $line;
+ }
+ close $fd2;
+ close $fd;
+ $tmp_old = "$gittmp/$old";
+ $label_old = "a/$old_name";
+ }
+
+ if ($new ne "") {
+ open my $fd2, "> $gittmp/$new";
+ open my $fd, "-|", "$gitbin/cat-file", "blob", $new;
+ while (my $line = <$fd>) {
+ print $fd2 $line;
+ }
+ close $fd2;
+ close $fd;
+ $tmp_new = "$gittmp/$new";
+ $label_new = "b/$new_name";
+ }
+
+ open my $fd, "-|", "/usr/bin/diff", "-L", $label_old, "-L", $label_new, "-u", "-p", $tmp_old, $tmp_new;
+ while (my $line = <$fd>) {
+ my $char = substr($line,0,1);
+ print '<div class="add">' if $char eq '+';
+ print '<div class="subtract">' if $char eq '-';
+ print '<div class="diff_head">' if $char eq '@';
+ print escapeHTML($line);
+ print '</div>' if $char eq '+' or $char eq '-' or $char eq '@';
+ }
+ close $fd;
+ #unlink("$gittmp/$new");
+ #unlink("$gittmp/$old");
+}
+