version 1.1.1.6, 2000/09/19 20:14:40 |
version 3.23, 2000/09/19 19:57:58 |
|
|
# SUCH DAMAGE. |
# SUCH DAMAGE. |
# |
# |
# $zId: cvsweb.cgi,v 1.101 2000/09/13 22:44:05 jumager Exp $ |
# $zId: cvsweb.cgi,v 1.101 2000/09/13 22:44:05 jumager Exp $ |
# $kId: cvsweb.cgi,v 1.24 2000/09/19 20:07:16 knu Exp $ |
# $Id$ |
# |
# |
### |
### |
|
|
|
|
sub redirect($); |
sub redirect($); |
sub safeglob($); |
sub safeglob($); |
sub getMimeTypeFromSuffix($); |
sub getMimeTypeFromSuffix($); |
sub head($;$); |
|
sub scan_directives(@); |
|
sub doAnnotate($$); |
sub doAnnotate($$); |
sub doCheckout($$); |
sub doCheckout($$); |
sub cvswebMarkup($$$); |
sub cvswebMarkup($$$); |
Line 1077 sub getMimeTypeFromSuffix($) { |
|
Line 1075 sub getMimeTypeFromSuffix($) { |
|
} |
} |
|
|
############################### |
############################### |
# read first lines like head(1) |
|
############################### |
|
sub head($;$) { |
|
my $fh = $_[0]; |
|
my $linecount = $_[1] || 10; |
|
|
|
my @buf; |
|
|
|
if ($linecount > 0) { |
|
my $i; |
|
for ($i = 0; !eof($fh) && $i < $linecount; $i++) { |
|
push @buf, scalar <$fh>; |
|
} |
|
} else { |
|
@buf = <$fh>; |
|
} |
|
|
|
@buf; |
|
} |
|
|
|
############################### |
|
# scan vim and Emacs directives |
|
############################### |
|
sub scan_directives(@) { |
|
my $ts = undef; |
|
|
|
for (@_) { |
|
$ts = $1 if /\b(?:ts|tabstop|tab-width)[:=]\s*([1-9]\d*)\b/; |
|
} |
|
|
|
('tabstop' => $ts); |
|
} |
|
|
|
############################### |
|
# show Annotation |
# show Annotation |
############################### |
############################### |
sub doAnnotate($$) { |
sub doAnnotate($$) { |
Line 1211 sub doAnnotate($$) { |
|
Line 1175 sub doAnnotate($$) { |
|
else { |
else { |
print "<pre>"; |
print "<pre>"; |
} |
} |
|
while (<$reader>) { |
# prefetch several lines |
|
my @buf = head($reader); |
|
|
|
my %d = scan_directives(@buf); |
|
|
|
while (@buf || !eof($reader)) { |
|
$_ = @buf ? shift @buf : <$reader>; |
|
|
|
my @words = split; |
my @words = split; |
# Adding one is for the (single) space which follows $words[0]. |
# Adding one is for the (single) space which follows $words[0]. |
my $rest = substr ($_, length ($words[0]) + 1); |
my $rest = substr ($_, length ($words[0]) + 1); |
Line 1253 sub doAnnotate($$) { |
|
Line 1209 sub doAnnotate($$) { |
|
|
|
print "<b>" if ($isCurrentRev); |
print "<b>" if ($isCurrentRev); |
printf ("%8s%s%8s %4d:", $revprint, ($isCurrentRev ? "|" : " "), $usrprint, $lineNr); |
printf ("%8s%s%8s %4d:", $revprint, ($isCurrentRev ? "|" : " "), $usrprint, $lineNr); |
print spacedHtmlText($line, $d{'tabstop'}); |
print spacedHtmlText($line); |
print "</b>" if ($isCurrentRev); |
print "</b>" if ($isCurrentRev); |
} |
} |
elsif ($words[0] eq "ok") { |
elsif ($words[0] eq "ok") { |
Line 1396 sub cvswebMarkup($$$) { |
|
Line 1352 sub cvswebMarkup($$$) { |
|
$input{only_with_tag}; |
$input{only_with_tag}; |
} |
} |
print "</td></tr></table>"; |
print "</td></tr></table>"; |
|
my @content = <$filehandle>; |
my $url = download_url($fileurl, $revision, $mimetype); |
my $url = download_url($fileurl, $revision, $mimetype); |
print "<HR noshade>"; |
print "<HR noshade>"; |
if ($mimetype =~ /^image/) { |
if ($mimetype =~ /^image/) { |
Line 1406 sub cvswebMarkup($$$) { |
|
Line 1363 sub cvswebMarkup($$$) { |
|
} |
} |
else { |
else { |
print "<PRE>"; |
print "<PRE>"; |
|
foreach (@content) { |
# prefetch several lines |
print spacedHtmlText($_); |
my @buf = head($filehandle); |
|
|
|
my %d = scan_directives(@buf); |
|
|
|
while (@buf || !eof($filehandle)) { |
|
$_ = @buf ? shift @buf : <$filehandle>; |
|
|
|
print spacedHtmlText($_, $d{'tabstop'}); |
|
} |
} |
print "</PRE>"; |
print "</PRE>"; |
} |
} |
Line 2305 sub flush_diff_rows($$$$) { |
|
Line 2254 sub flush_diff_rows($$$$) { |
|
# human_readable_diff(String revision_to_return_to); |
# human_readable_diff(String revision_to_return_to); |
## |
## |
sub human_readable_diff($){ |
sub human_readable_diff($){ |
my ($difftxt, $where_nd, $filename, $pathname, $scriptwhere_nd); |
my ($i,$difftxt, $where_nd, $filename, $pathname, $scriptwhere_nd); |
my ($fh, $rev) = @_; |
my ($fh, $rev) = @_; |
my ($date1, $date2, $r1d, $r2d, $r1r, $r2r, $rev1, $rev2, $sym1, $sym2); |
my ($date1, $date2, $r1d, $r2d, $r1r, $r2r, $rev1, $rev2, $sym1, $sym2); |
my (@rightCol, @leftCol); |
my (@rightCol, @leftCol); |
Line 2359 sub human_readable_diff($){ |
|
Line 2308 sub human_readable_diff($){ |
|
# cascading style sheets because we've to set the |
# cascading style sheets because we've to set the |
# font and color for each row. anyone ...? |
# font and color for each row. anyone ...? |
#### |
#### |
|
while (<$fh>) { |
|
$difftxt = $_; |
|
|
# prefetch several lines |
|
my @buf = head($fh); |
|
|
|
my %d = scan_directives(@buf); |
|
|
|
while (@buf || !eof($fh)) { |
|
$difftxt = @buf ? shift @buf : <$fh>; |
|
|
|
if ($difftxt =~ /^@@/) { |
if ($difftxt =~ /^@@/) { |
($oldline,$newline,$funname) = $difftxt =~ /@@ \-([0-9]+).*\+([0-9]+).*@@(.*)/; |
($oldline,$newline,$funname) = $difftxt =~ /@@ \-([0-9]+).*\+([0-9]+).*@@(.*)/; |
print "<tr bgcolor=\"$diffcolorHeading\"><td width=\"50%\">"; |
print "<tr bgcolor=\"$diffcolorHeading\"><td width=\"50%\">"; |
Line 2383 sub human_readable_diff($){ |
|
Line 2326 sub human_readable_diff($){ |
|
} |
} |
else { |
else { |
($diffcode,$rest) = $difftxt =~ /^([-+ ])(.*)/; |
($diffcode,$rest) = $difftxt =~ /^([-+ ])(.*)/; |
$_ = spacedHtmlText($rest, $d{'tabstop'}); |
$_ = spacedHtmlText ($rest); |
|
|
# Add fontface, size |
# Add fontface, size |
$_ = "$fs $_$fe"; |
$_ = "$fs $_$fe"; |
Line 2467 sub navigateHeader($$$$$) { |
|
Line 2410 sub navigateHeader($$$$$) { |
|
$swhere = urlencode($filename) if ($swhere eq ""); |
$swhere = urlencode($filename) if ($swhere eq ""); |
print "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"; |
print "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"; |
print "<HTML>\n<HEAD>\n"; |
print "<HTML>\n<HEAD>\n"; |
print '<!-- CVSweb $zRevision: 1.101 $ $kRevision: 1.24 $ -->'; |
print '<!-- CVSweb $zRevision: 1.101 $ $Revision$ -->'; |
print "\n<TITLE>$path$filename - $title - $rev</TITLE></HEAD>\n"; |
print "\n<TITLE>$path$filename - $title - $rev</TITLE></HEAD>\n"; |
print "<BODY BGCOLOR=\"$backcolor\">\n"; |
print "<BODY BGCOLOR=\"$backcolor\">\n"; |
print "<table width=\"100%\" border=0 cellspacing=0 cellpadding=1 bgcolor=\"$navigationHeaderColor\">"; |
print "<table width=\"100%\" border=0 cellspacing=0 cellpadding=1 bgcolor=\"$navigationHeaderColor\">"; |
Line 2822 sub http_header(;$) { |
|
Line 2765 sub http_header(;$) { |
|
|
|
sub html_header($) { |
sub html_header($) { |
my ($title) = @_; |
my ($title) = @_; |
my $version = '$zRevision: 1.101 $ $kRevision: 1.24 $'; #' |
my $version = '$zRevision: 1.101 $ $Revision$'; #' |
http_header(); |
http_header(); |
print <<EOH; |
print <<EOH; |
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" |
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" |