#!/usr/bin/perl -w use strict; my $filename = ""; my @leftside; my @rightside; my $rows = 0; my $wasneg = 0; my $waspos = 0; my $neg_rows = 0; my $pos_rows = 0; my $leftline = 0; my $rightline = 0; my $str = ""; my $function = ""; while(<>) { chomp; s/\s+$//; s/\n+$//; s/\&/&/g; s/\/>/g; if (/^Index: (\w*\/?\w+\.?\w*)/) { my $diffrows = ( $neg_rows > $pos_rows ? $neg_rows : $pos_rows ); if ($diffrows) { $rows = $rows + $diffrows; } $filename = $1; } elsif (/^===================================================================/) { } elsif (/^RCS file: /) { } elsif (/retrieving revision ([0-9.]+)/) { } elsif (/^diff/) { } elsif (/^--- ([\/\.\w_]+)\s+(\d+ \w+ \d+ [\d:]+ -?\d+\s*[\d.]*)/) { $leftside[$rows] = "\n
+". "
$filename". "
\n". "
\n\n\n"; $rightside[$rows] = ""; $rows++; my $rev = defined($2) ? " $2" : ""; $leftside[$rows] = "\n"; $neg_rows = 1; } elsif (/^\+\+\+ ([\/\.\w_]+)\s+(\d+ \w+ \d+ [\d:]+ -?\d+\s+[\d.]+)?/) { my $rev = defined($2) ? " $2" : ""; $rightside[$rows] = "\n"; $pos_rows = 1; $rows++; } elsif (/^@@ -(\d+),(\d+) \+(\d+),(\d+) @@ (\w+\.?\w*)\(/) { $leftline = $1; $rightline = $3; if ($5 ne $function) { $leftside[$rows] = "\n\n"; } else { $leftside[$rows] = "\n\n"; } $function = $5; $rightside[$rows] = ""; $rows++; } elsif (/^@@ -(\d+),(\d+) \+(\d+),(\d+) @@/) { $leftline = $1; $rightline = $3; $leftside[$rows] = "\n\n"; $rightside[$rows] = "\n\n"; $rows++; } elsif (/^-(.*)/) { $str = length($1) ? $1 : " "; $str =~ s/^\t/ /; $str = "\n"; $leftside[$rows + $neg_rows] = $str; $leftline++; $neg_rows++; } elsif (/^\+(.*)/) { $str = length($1) ? $1 : " "; $str =~ s/^\t/ /; $str = "\n"; $rightside[$rows + $pos_rows] = $str; $rightline++; $pos_rows++; } else { my $diffrows = ( $neg_rows > $pos_rows ? $neg_rows : $pos_rows ); if ($diffrows) { $rows = $rows + $diffrows; } s/^\s//; s/^\t/ /; $str = $_; if (length($str) == 0) { $leftside[$rows] = "\n"; } else { $leftside[$rows] = "\n"; $rightside[$rows] = "\n"; } $leftline++; $rightline++; $rows++; $neg_rows = 0; $pos_rows = 0; } } print "\n\n"; print " "; print "\n
" ."

File: $filename$rev

". "

File: $filename$rev

". "$5

". "

". "...

". "

". "line $leftline". "

line $rightline". "
$leftline$str$rightline$str
$leftline\n"; $rightside[$rows] = "$rightline
$leftline$str$rightline$str
\n"; LINELOOP: for (my $i = 0; $i < $rows; $i++) { if (!defined($leftside[$i]) && !defined($rightside[$i])) { next LINELOOP; } if (!defined($leftside[$i])) { $leftside[$i] = "\n"; } print "$leftside[$i]$rightside[$i]"; } print "
\n"; } if (!defined($rightside[$i])) { $rightside[$i] = "
";