=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 1.1.1.14 retrieving revision 3.35 diff -u -p -r1.1.1.14 -r3.35 --- cvsweb/cvsweb.cgi 2000/12/07 15:16:31 1.1.1.14 +++ cvsweb/cvsweb.cgi 2000/10/10 21:14:05 3.35 @@ -42,8 +42,8 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $zId: cvsweb.cgi,v 1.104 2000/11/01 22:05:12 hnordstrom Exp $ -# $kId: cvsweb.cgi,v 1.42 2000/12/07 15:11:24 knu Exp $ +# $zId: cvsweb.cgi,v 1.103 2000/09/20 17:02:29 jumager Exp $ +# $Id: cvsweb.cgi,v 3.35 2000/10/10 21:14:05 knu Exp $ # ### @@ -52,7 +52,6 @@ use strict; use vars qw ( $config $allow_version_select $verbose %CVSROOT %CVSROOTdescr %MIRRORS %DEFAULTVALUE %ICONS %MTYPES - @DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS %alltags @tabcolors %fileinfo %tags @branchnames %nameprinted %symrev %revsym @allrevisions %date %author @revdisplayorder @revisions %state %difflines %log %branchpoint @revorder @@ -62,11 +61,11 @@ use vars qw ( %funcline_regexp $is_mod_perl $is_links $is_lynx $is_w3m $is_msie $is_mozilla3 $is_textbased %input $query $barequery $sortby $bydate $byrev $byauthor - $bylog $byfile $defaultDiffType $logsort $cvstree $cvsroot - $mimetype $charset $defaultTextPlain $defaultViewable - $allow_compress $GZIPBIN $backicon $diricon $fileicon - $fullname $newname $cvstreedefault - $body_tag $body_tag_for_src $logo $defaulttitle $address + $bylog $byfile $hr_default $logsort $cvstree $cvsroot + $mimetype $defaultTextPlain $defaultViewable $allow_compress + $GZIPBIN $backicon $diricon $fileicon $fullname $newname + $cvstreedefault $body_tag $body_tag_for_src + $logo $defaulttitle $address $long_intro $short_instruction $shortLogLen $show_author $dirtable $tablepadding $columnHeaderColorDefault $columnHeaderColorSorted $hr_breakable $showfunc $hr_ignwhite @@ -84,10 +83,7 @@ use vars qw ( ); sub printDiffSelect($); -sub printDiffLinks($$); -sub printLogSortSelect($); sub findLastModifiedSubdirs(@); -sub htmlify_sub(&$); sub htmlify($;$); sub spacedHtmlText($;$); sub link($$); @@ -121,7 +117,6 @@ sub download_link($$$;$); sub toggleQuery($$); sub urlencode($); sub htmlquote($); -sub htmlunquote($); sub http_header(;$); sub html_header($); sub html_footer(); @@ -169,49 +164,6 @@ $tabstop = $use_moddate = $moddate = $gzip_open = unde $LOG_FILESEPARATOR = q/^={77}$/; $LOG_REVSEPARATOR = q/^-{28}$/; -@DIFFTYPES = qw(h H u c s); -@DIFFTYPES{@DIFFTYPES} = ( - { - 'descr' => 'colored', - 'opts' => [ '-u' ], - 'colored' => 1, - }, - { - 'descr' => 'long colored', - 'opts' => [ '--unified=15' ], - 'colored' => 1, - }, - { - 'descr' => 'unified', - 'opts' => [ '-u' ], - 'colored' => 0, - }, - { - 'descr' => 'context', - 'opts' => [ '-c' ], - 'colored' => 0, - }, - { - 'descr' => 'side by side', - 'opts' => [ '--side-by-side', '--width=164' ], - 'colored' => 0, - }, - ); - -@LOGSORTKEYS = qw(cvs date rev); -@LOGSORTKEYS{@LOGSORTKEYS} = ( - { - 'descr' => 'Not sorted', - }, - { - 'descr' => 'Commit date', - }, - { - 'descr' => 'Revision', - }, - ); - - ##### End of configuration variables ##### use Time::Local; @@ -375,7 +327,7 @@ else { $byfile = 1; } -$defaultDiffType = $input{'f'}; +$hr_default = $input{'f'} eq 'h'; $logsort = $input{'logsort'}; @@ -530,8 +482,9 @@ elsif (-d $fullname) { } print "\n"; $infocols++; - printf '"; $infocols++; - printf '"; if ($show_author) { $infocols++; - printf '"; } $infocols++; - printf '"; } elsif ($use_descriptions) { - printf '
', - $byfile ? $columnHeaderColorSorted : $columnHeaderColorDefault; + print "
"; if ($byfile) { print 'File'; } else { @@ -543,8 +496,9 @@ elsif (-d $fullname) { # with revision information: if (scalar(%fileinfo)) { $infocols++; - printf '', - $byrev ? $columnHeaderColorSorted : $columnHeaderColorDefault; + print ""; if ($byrev) { print 'Rev.'; } else { @@ -553,19 +507,21 @@ elsif (-d $fullname) { } print "', - $bydate ? $columnHeaderColorSorted : $columnHeaderColorDefault; + print ""; if ($bydate) { print 'Age'; } else { print &link('Age', sprintf('./%s#dirlist', - &toggleQuery("sortby", "date"))); + &toggleQuery("sortby", "date"))); } print "', - $byauthor ? $columnHeaderColorSorted : $columnHeaderColorDefault; + print ""; if ($byauthor) { print 'Author'; } else { @@ -575,18 +531,19 @@ elsif (-d $fullname) { print "', - $bylog ? $columnHeaderColorSorted : $columnHeaderColorDefault; + print ""; if ($bylog) { print 'Last log entry'; } else { print &link('Last log entry', sprintf('./%s#dirlist', - &toggleQuery("sortby", "log"))); + &toggleQuery("sortby", "log"))); } print "', $columnHeaderColorDefault; + print ""; print "Description"; $infocols++; } @@ -651,9 +608,9 @@ elsif (-d $fullname) { next if ($_ eq '..' && $where eq '/'); my ($rev,$date,$log,$author,$filename) = @{$fileinfo{$_}} if (defined($fileinfo{$_})); - printf '
', $tabcolors[$dirrow % 2] if $dirtable; + print "
" if ($dirtable); if ($_ eq '..') { - $url = "../$query"; + $url = "../" . $query; if ($nofilelinks) { print $backicon; } @@ -663,7 +620,7 @@ elsif (-d $fullname) { print " ", &link("Previous Directory", $url); } else { - $url = urlencode($_) . "/$query"; + $url = urlencode($_) . '/' . $query; print ""; if ($nofilelinks) { print $diricon; @@ -682,7 +639,7 @@ elsif (-d $fullname) { if ($filename) { print "  " if ($dirtable); if ($date) { - print " ", readableTime(time() - $date,0), ""; + print " " . readableTime(time() - $date,0) . ""; } if ($show_author) { print " " if ($dirtable); @@ -693,8 +650,8 @@ elsif (-d $fullname) { print "$filename/$rev"; print "
" if ($dirtable); if ($log) { - print " ", - &htmlify(substr($log,0,$shortLogLen)); + print " " + . &htmlify(substr($log,0,$shortLogLen)); if (length $log > 80) { print "..."; } @@ -704,7 +661,7 @@ elsif (-d $fullname) { else { my ($dwhere) = ($where ne "/" ? $where : "") . $_; if ($use_descriptions && defined $descriptions{$dwhere}) { - print "
 " if $dirtable; + print " " if $dirtable; print $descriptions{$dwhere}; } elsif ($dirtable && $infocols > 1) { # close the row with the appropriate number of @@ -735,7 +692,7 @@ elsif (-d $fullname) { next if (!defined($fileinfo{$_})); ($rev,$date,$log,$author) = @{$fileinfo{$_}}; $filesfound++; - printf '
', $tabcolors[$dirrow % 2] if $dirtable; + print "
" if ($dirtable); print ""; if ($nofilelinks) { print $fileicon; @@ -750,7 +707,7 @@ elsif (-d $fullname) { $defaultViewable ? "text/x-cvsweb-markup" : undef); print " " if ($dirtable); if ($date) { - print " ", readableTime(time() - $date,0), ""; + print " " . readableTime(time() - $date,0) . ""; } if ($show_author) { print " " if ($dirtable); @@ -758,7 +715,7 @@ elsif (-d $fullname) { } print " " if ($dirtable); if ($log) { - print " ", &htmlify(substr($log,0,$shortLogLen)); + print " " . &htmlify(substr($log,0,$shortLogLen)); if (length $log > 80) { print "..."; } @@ -773,7 +730,7 @@ elsif (-d $fullname) { if ($dirtable && defined($tableBorderColor)) { print "
"; } - print( $dirtable == 1 ? "\n" : "\n" ); + print "". ($dirtable == 1) ? "" : "" . "\n"; if ($filesexists && !$filesfound) { print "

NOTE: There are $filesexists files, but none matches the current tag ($input{only_with_tag})\n"; @@ -831,9 +788,12 @@ elsif (-d $fullname) { print "Revision"; print "Log message"; print ""; - print "Sort log by: "; - printLogSortSelect(0); - print ""; + print "revisions by: \n"; + print ""; print "Diff format: "; printDiffSelect(0); print ""; @@ -927,43 +887,18 @@ gzipclose(); sub printDiffSelect($) { my ($use_java_script) = @_; - my $f = $input{'f'}; - - print '\n"; + print "

Check whether the directory $cvsroot/CVSROOT exists " + . "and the script has write-access to the CVSROOT/history " + . "file if it exists." + . "
The script needs to place lock files in the " + . "directory the file is in as well.
"); } $| = 1; @@ -1598,7 +1470,7 @@ sub viewable($) { sub doDiff($$$$$$) { my($fullname, $r1, $tr1, $r2, $tr2, $f) = @_; my $fh = do {local(*FH);}; - my ($rev1, $rev2, $sym1, $sym2, $f1, $f2); + my ($rev1, $rev2, $sym1, $sym2, @difftype, $diffname, $f1, $f2); if ($r1 =~ /([^:]+)(:(.+))?/) { $rev1 = $1; @@ -1632,18 +1504,36 @@ sub doDiff($$$$$$) { ($rev1, $sym1) = ($rev2, $sym2); ($rev2, $sym2) = ($tmp1, $tmp2); } - my $difftype = $DIFFTYPES{$f}; - - if (!$difftype) { + my $human_readable = 0; + if ($f eq 'c') { + @difftype = qw{-c}; + $diffname = "Context diff"; + } + elsif ($f eq 's') { + @difftype = qw{--side-by-side --width=164}; + $diffname = "Side by Side"; + } + elsif ($f eq 'H') { + $human_readable = 1; + @difftype = qw{--unified=15}; + $diffname = "Long Human readable"; + } + elsif ($f eq 'h') { + @difftype =qw{-u}; + $human_readable = 1; + $diffname = "Human readable"; + } + elsif ($f eq 'u') { + @difftype = qw{-u}; + $diffname = "Unidiff"; + } + else { fatal ("400 Bad arguments", "Diff format $f not understood"); } - my @difftype = @{$difftype->{'opts'}}; - my $human_readable = $difftype->{'colored'}; - # apply special options if ($showfunc) { - push @difftype, '-p' if $f ne 's'; + push @difftype, '-p' if $f =~ /^[cHhu]$/; my($re1, $re2); @@ -1705,14 +1595,14 @@ sub doDiff($$$$$$) { s|$cvsroot/||o; if ($sym1) { chop; - $_ .= " $sym1\n"; + $_ .= " " . $sym1 . "\n"; } } elsif (m|^$f2 $cvsroot|o) { s|$cvsroot/||o; if ($sym2) { chop; - $_ .= " $sym2\n"; + $_ .= " " . $sym2 . "\n"; } } print $_; @@ -1780,66 +1670,63 @@ sub getDirLogs($$@) { again: if ($state eq "head") { #$rcsfile = $1 if (/^RCS file: (.+)$/); #not used (yet) - - if (/^Working file: (.+)$/) { - $filename = $1; - } elsif (/^head: (.+)$/) { - $head = $1; - } elsif (/^branch: (.+)$/) { - $branch = $1 - } elsif (/^symbolic names:/) { - $state = "tags"; - ($branch = $head) =~ s/\.\d+$// if (!defined($branch)); - $branch =~ s/(\.?)(\d+)$/${1}0.$2/; - $symrev{MAIN} = $branch; - $symrev{HEAD} = $branch; - $alltags{MAIN} = 1; - $alltags{HEAD} = 1; - push (@filetags, "MAIN", "HEAD"); - } elsif (/$LOG_REVSEPARATOR/o) { - $state = "log"; - $rev = undef; - $date = undef; - $log = ""; - # Try to reconstruct the relative filename if RCS spits out a full path - $filename =~ s%^\Q$DirName\E/%%; - } + $filename = $1 if (/^Working file: (.+)$/); + $head = $1 if (/^head: (.+)$/); + $branch = $1 if (/^branch: (.+)$/); + } + if ($state eq "head" && /^symbolic names/) { + $state = "tags"; + ($branch = $head) =~ s/\.\d+$// if (!defined($branch)); + $branch =~ s/(\.?)(\d+)$/${1}0.$2/; + $symrev{MAIN} = $branch; + $symrev{HEAD} = $branch; + $alltags{MAIN} = 1; + $alltags{HEAD} = 1; + push (@filetags, "MAIN", "HEAD"); next; } - if ($state eq "tags") { - if (/^\s+(.+):\s+([\d\.]+)\s+$/) { - push (@filetags, $1); - $symrev{$1} = $2; - $alltags{$1} = 1; + if ($state eq "tags" && + /^\s+(.+):\s+([\d\.]+)\s+$/) { + push (@filetags, $1); + $symrev{$1} = $2; + $alltags{$1} = 1; + next; + } + if ($state eq "tags" && /^\S/) { + if (defined($tag) && (defined($symrev{$tag}) || $tag eq "HEAD")) { + $revwanted = $tag eq "HEAD" ? $symrev{"MAIN"} : $symrev{$tag}; + ($branch = $revwanted) =~ s/\b0\.//; + ($branchpoint = $branch) =~ s/\.?\d+$//; + $revwanted = undef if ($revwanted ne $branch); + } + elsif (defined($tag) && $tag ne "HEAD") { + print "Tag not found, skip this file" if ($verbose); + $state = "skip"; next; - } elsif (/^\S/) { - if (defined($tag)) { - if(defined($symrev{$tag}) || $tag eq "HEAD") { - $revwanted = $symrev{$tag eq "HEAD" ? "MAIN" : $tag}; - ($branch = $revwanted) =~ s/\.0\././; - ($branchpoint = $branch) =~ s/\.?\d+$//; - $revwanted = undef if ($revwanted ne $branch); - } elsif ($tag ne "HEAD") { - print "Tag not found, skip this file" if ($verbose); - $state = "skip"; - next; - } - } - foreach my $tagfound (@filetags) { - $tags{$tagfound} = 1; - } - $state = "head"; - goto again; } + foreach my $tagfound (@filetags) { + $tags{$tagfound} = 1; + } + $state = "head"; + goto again; } + if ($state eq "head" && /$LOG_REVSEPARATOR/o) { + $state = "log"; + $rev = undef; + $date = undef; + $log = ""; + # Try to reconstruct the relative filename if RCS spits out a full path + $filename =~ s%^\Q$DirName\E/%%; + next; + } if ($state eq "log") { if (/$LOG_REVSEPARATOR/o || /$LOG_FILESEPARATOR/o) { # End of a log entry. my $revbranch; ($revbranch = $rev) =~ s/\.\d+$//; - print "$filename $rev Wanted: $revwanted ", - "Revbranch: $revbranch Branch: $branch ", - "Branchpoint: $branchpoint\n" if ($verbose); + print "$filename $rev Wanted: $revwanted " + . "Revbranch: $revbranch Branch: $branch " + . "Branchpoint: $branchpoint\n" if ($verbose); if (!defined($revwanted) && defined($branch) && $branch eq $revbranch || !defined($tag)) { print "File revision $rev found for branch $branch\n" @@ -1877,7 +1764,7 @@ again: next; } else { - $log .= $_; + $log = $log . $_; } } if (/$LOG_FILESEPARATOR/o) { @@ -2015,10 +1902,11 @@ sub readLog($;$) { # This is not neccesary the same revision as marked as head in the RCS file. my $headrev = $curbranch || "1"; ($symrev{"MAIN"} = $headrev) =~ s/(\.?)(\d+)$/${1}0.$2/; + revision: foreach $rev (@revorder) { if ($rev =~ /^(\S*)\.\d+$/ && $headrev eq $1) { $symrev{"HEAD"} = $rev; - last; + last revision; } } ($symrev{"HEAD"} = $headrev) =~ s/\.\d+$// @@ -2036,7 +1924,7 @@ sub readLog($;$) { foreach (reverse sort keys %symrev) { $rev = $symrev{$_}; - if ($rev =~ /^((.*)\.)0\.(\d+)$/) { + if ($rev =~ /^((.*)\.)?\b0\.(\d+)$/) { push(@branchnames, $_); # # A revision number of A.B.0.D really translates into @@ -2049,22 +1937,21 @@ sub readLog($;$) { # with the branch number 0.A, with the exception that # it has no head to translate to if there is nothing on # the branch, but I guess this can never happen? + # (the code below gracefully forgets about the branch + # if it should happen) # - # Since some stupid people actually import/check in - # files with version 0.X we assume that the above cannot - # happen, and regard 0.X(.*) as a revision and not a branch. - # $head = defined($2) ? $2 : ""; $branch = $3; $branchrev = $head . ($head ne "" ? "." : "") . $branch; my $regex; - $regex = quotemeta $branchrev; + ($regex = $branchrev) =~ s/\./\\./g; $rev = $head; + revision: foreach my $r (@revorder) { if ($r =~ /^${regex}\b/) { $rev = $branchrev; - last; + last revision; } } next if ($rev eq ""); @@ -2082,7 +1969,7 @@ sub readLog($;$) { my ($onlyonbranch, $onlybranchpoint); if ($onlyonbranch = $input{'only_with_tag'}) { $onlyonbranch = $symrev{$onlyonbranch}; - if ($onlyonbranch =~ s/\.0\././) { + if ($onlyonbranch =~ s/\b0\.//) { ($onlybranchpoint = $onlyonbranch) =~ s/\.\d+$//; } else { @@ -2120,20 +2007,6 @@ sub readLog($;$) { } -sub printDiffLinks($$) { - my($text, $url) = @_; - my @extra; - - local $_; - for ($DIFFTYPES{$defaultDiffType}{'colored'} ? qw(u) : qw(h)) { - my $f = $_ eq $defaultDiffType ? '' : $_; - - push @extra, &link(lc $DIFFTYPES{$_}{'descr'}, "$url&f=$f"); - } - - print &link($text, $url), ' (', join(', ', @extra), ')'; -} - sub printLog($;$) { my ($link, $br, $brp); ($_,$link) = @_; @@ -2210,13 +2083,13 @@ sub printLog($;$) { } if (defined @mytz) { my ($est) = $mytz[(localtime($date{$_}))[8]]; - print ", ", scalar localtime($date{$_}), " $est ("; + print ", " . scalar localtime($date{$_}) . " $est ("; } else { - print ", ", scalar gmtime($date{$_}), " UTC ("; + print ", " . scalar gmtime($date{$_}) . " UTC ("; } - print readableTime(time() - $date{$_},1), " ago)"; + print readableTime(time() - $date{$_},1) . " ago)"; print " by "; - print "", $author{$_}, "\n"; + print "" . $author{$_} . "\n"; print "
Branch: ",$link?link_tags($revsym{$br}):$revsym{$br},"\n" if ($revsym{$br}); print "
CVS Tags: ",$link?link_tags($revsym{$_}):$revsym{$_},"" @@ -2258,7 +2131,10 @@ sub printLog($;$) { $barequery); print " to previous "; - printDiffLinks($prev, $url); + print &link($prev, $url); + if (!$hr_default) { # offer a human readable version if not default + print &link('colored', "$url&f=h"); + } } # # Plus, if it's on a branch, and it's not a vendor branch, @@ -2271,7 +2147,10 @@ sub printLog($;$) { $barequery); print " to branchpoint "; - printDiffLinks($brp, $url); + print &link($brp, $url); + if (!$hr_default) { # offer a human readable version if not default + print &link('colored', "$url&f=h"); + } } # # Plus, if it's on a branch, and it's not a vendor branch, @@ -2304,7 +2183,10 @@ sub printLog($;$) { $barequery); print " next main "; - printDiffLinks($nextmain, $url); + print &link($nextmain, $url); + if (!$hr_default) { # offer a human readable version if not default + print &link('colored', "$url&f=h"); + } } } # Plus if user has selected only r1, then present a link @@ -2319,7 +2201,10 @@ sub printLog($;$) { $barequery); print " to selected "; - printDiffLinks($input{'r1'}, $url); + print &link($input{'r1'}, $url); + if (!$hr_default) { # offer a human readable version if not default + print &link('colored', "$url&f=h"); + } } } print "

\n";
@@ -2399,8 +2284,8 @@ sub doLog($) {
 	print "
\n"; print ""; print "\n"; - print ""; - print ""; + print "\n"; if (@branchnames) { @@ -2435,9 +2320,13 @@ sub doLog($) { print ""; - print ""; + print ""; print ""; print "\n"; print "
Preferred Diff type:"; + print "
Preferred Diff type:"; printDiffSelect($use_java_script); print "
"; print "\n"; print "Sort log by:"; - printLogSortSelect($use_java_script); - print "
"; @@ -2507,16 +2396,17 @@ sub human_readable_diff($){ $date2 = $r2d; } - print "

Diff for /$where_nd between version $rev1 and $rev2

\n", - "\n", - "\n", - "
", - "version $rev1"; + print "

Diff for /$where_nd between version $rev1 and $rev2

\n"; + + print "\n"; + print "\n"; + print "\n", - "\n"; + print "\n"; @@ -2641,7 +2531,7 @@ sub navigateHeader($$$$$) { $swhere = urlencode($filename) if ($swhere eq ""); print "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"; print "\n\n"; - print ''; + print ''; print "\n$path$filename - $title - $rev\n"; print "$body_tag_for_src\n"; print "
"; + print "version $rev1"; print ", $date1" if (defined($date1)); print "
Tag: $sym1\n" if ($sym1); - print "
", - "version $rev2"; + print ""; + print "version $rev2"; print ", $date2" if (defined($date2)); print "
Tag: $sym2\n" if ($sym1); print "
"; @@ -2657,10 +2547,10 @@ sub navigateHeader($$$$$) { sub plural_write($$) { my ($num,$text) = @_; if ($num != 1) { - $text .= "s"; + $text = $text . "s"; } if ($num > 0) { - return join(' ', $num, $text); + return $num . " " . $text; } else { return ""; @@ -2704,7 +2594,7 @@ sub readableTime($$) { my $resttime = plural_write(int ($rest / $break), $desc{$break}); if ($resttime) { - $retval .= ", $resttime"; + $retval = $retval . ", " . $resttime; } } @@ -2734,8 +2624,8 @@ sub clickablePath($$) { my $wherepath = ''; my ($lastslash) = $pathname =~ m|/$|; foreach (split(/\//, $pathname)) { - $retval .= " / "; - $wherepath .= "/$_"; + $retval = $retval . " / "; + $wherepath = $wherepath . '/' . $_; my ($last) = "$wherepath/" eq "/$pathname" || $wherepath eq "/$pathname"; if ($clickLast || !$last) { @@ -2779,7 +2669,8 @@ sub chooseCVSRoot() { foreach $k (@foo) { print "\n"; + print ">" . ($CVSROOTdescr{$k} ? $CVSROOTdescr{$k} : + $k). "\n"; } print "\n"; print ""; @@ -2844,7 +2735,7 @@ sub fileSortCmp() { sub download_url($$;$) { my ($url,$revision,$mimetype) = @_; - $revision =~ s/\.0\././; + $revision =~ s/\b0\.//; if (defined($checkoutMagic) && (!defined($mimetype) || $mimetype ne "text/x-cvsweb-markup")) { @@ -2954,18 +2845,6 @@ sub htmlquote($) { $_; } -sub htmlunquote($) { - local($_) = @_; - - # Special Characters; RFC 1866 - s/"/\"/g; - s/<//g; - s/&/&/g; - - $_; -} - sub http_header(;$) { my $content_type = shift || "text/html"; if (defined($moddate)) { @@ -2973,7 +2852,7 @@ sub http_header(;$) { Apache->request->header_out("Last-Modified" => scalar gmtime($moddate) . " GMT"); } else { - print "Last-Modified: ", scalar gmtime($moddate), " GMT\r\n"; + print "Last-Modified: " . scalar gmtime($moddate) . " GMT\r\n"; } } if ($is_mod_perl) { @@ -3000,7 +2879,7 @@ sub http_header(;$) { } select(GZIP); $gzip_open = 1; -# print "" if ($content_type =~ m|^text/html\b|); +# print "" if ($content_type eq "text/html"); } else { if ($is_mod_perl) { @@ -3024,13 +2903,12 @@ sub http_header(;$) { sub html_header($) { my ($title) = @_; - my $version = '$zRevision: 1.104 $ $kRevision: 1.42 $'; #' - http_header(defined($charset) ? "text/html; charset=$charset" : "text/html"); + my $version = '$zRevision: 1.103 $ $Revision: 3.35 $'; #' + http_header(); print < - $title