=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 1.1.1.10 retrieving revision 3.28 diff -u -p -r1.1.1.10 -r3.28 --- cvsweb/cvsweb.cgi 2000/10/07 07:50:18 1.1.1.10 +++ cvsweb/cvsweb.cgi 2000/09/30 18:27:16 3.28 @@ -43,7 +43,7 @@ # SUCH DAMAGE. # # $zId: cvsweb.cgi,v 1.103 2000/09/20 17:02:29 jumager Exp $ -# $kId: cvsweb.cgi,v 1.33 2000/10/07 07:44:12 knu Exp $ +# $Id: cvsweb.cgi,v 3.28 2000/09/30 18:27:16 knu Exp $ # ### @@ -79,7 +79,6 @@ use vars qw ( $tabstop $state $annTable $sel $curbranch @HideModules $module $use_descriptions %descriptions @mytz $dwhere $moddate $use_moddate $has_zlib $gzip_open - $LOG_FILESEPARATOR $LOG_REVSEPARATOR ); sub printDiffSelect($); @@ -160,9 +159,6 @@ $checkout_magic = $show_subdir_lastmod = $show_log_in_ $navigationHeaderColor = $tableBorderColor = $markupLogColor = $tabstop = $use_moddate = $moddate = $gzip_open = undef; -$LOG_FILESEPARATOR = q/^={77}$/; -$LOG_REVSEPARATOR = q/^-{28}$/; - ##### End of configuration variables ##### use Time::Local; @@ -283,24 +279,25 @@ foreach (keys %DEFAULTVALUE) } $barequery = ""; -my @barequery; foreach (@stickyvars) { # construct a query string with the sticky non default parameters set if (defined($input{$_}) && $input{$_} ne '' && !(defined($DEFAULTVALUE{$_}) && $input{$_} eq $DEFAULTVALUE{$_})) { - push @barequery, join('=', urlencode($_), urlencode($input{$_})); + if ($barequery) { + $barequery = $barequery . "&"; + } + my $thisval = urlencode($_) . "=" . urlencode($input{$_}); + $barequery .= $thisval; } } # is there any query ? -if (@barequery) { - $barequery = join('&', @barequery); +if ($barequery) { $query = "?$barequery"; - $barequery = "&$barequery"; + $barequery = "&" . $barequery; } else { $query = ""; } -undef @barequery; # get actual parameters $sortby = $input{"sortby"}; @@ -348,8 +345,7 @@ if ($input{'cvsroot'} && $CVSROOT{$input{'cvsroot'}}) $cvsroot = $CVSROOT{$cvstree}; # create icons out of description -my $k; -foreach $k (keys %ICONS) { +foreach my $k (keys %ICONS) { no strict 'refs'; my ($itxt,$ipath,$iwidth,$iheight) = @{$ICONS{$k}}; if ($ipath) { @@ -359,7 +355,6 @@ foreach $k (keys %ICONS) { ${"${k}icon"} = $itxt; } } -undef $k; my $config_cvstree = "$config-$cvstree"; @@ -370,7 +365,6 @@ if (-f $config_cvstree) { sprintf('Error in loading configuration file: %s

%s
', $config_cvstree, &htmlify($@))); } -undef $config_cvstree; $prcategories = '(?:' . join('|', @prcategories) . ')'; $prcgi .= '%s' if defined($prcgi) && $prcgi !~ /%s/; @@ -936,13 +930,13 @@ sub htmlify($;$) { if ($extra) { # get PR #'s as link .. if (defined($prcgi)) { - 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1 . &link($2, sprintf($prcgi, $2))`ie; # `; - $string =~ s`\b${prcategories}/(\d+)\b`&link($&, sprintf($prcgi, $1))`igeo; # `; + 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1 . &link($2, sprintf($prcgi, $2))`ie; # ` + $string =~ s`\b${prcategories}/(\d+)\b`&link($&, sprintf($prcgi, $1))`igeo; # ` } # get manpage specs as link .. if (defined($mancgi)) { - $string =~ s`\b([a-zA-Z]\w+)(?:\(([0-9n])\)\B|\.([0-9n])\b)`&link($&, sprintf($mancgi, $2 ne '' ? $2 : $3, $1))`ge; # `x; + $string =~ s`\b([a-zA-Z]\w+)\(([0-9n])\)\B`&link($&, sprintf($mancgi, $2, $1))`ge; # ` } } @@ -982,7 +976,7 @@ sub spacedHtmlText($;$) { sub link($$) { my($name, $where) = @_; - return "$name"; + return "$name\n"; } sub revcmp($$) { @@ -1147,6 +1141,11 @@ sub doAnnotate($$) { ($pathname = $where) =~ s/(Attic\/)?[^\/]*$//; ($filename = $where) =~ s/^.*\///; + http_header(); + + navigateHeader($scriptwhere,$pathname,$filename,$rev, "annotate"); + print "

Annotation of $pathname$filename, Revision $rev

\n"; + # this seems to be necessary $| = 1; $| = 0; # Flush @@ -1156,7 +1155,7 @@ sub doAnnotate($$) { # the public domain. # we could abandon the use of rlog, rcsdiff and co using # the cvsserver in a similiar way one day (..after rewrite) - $pid = open2($reader, $writer, "cvs -Rl server") || fatal ("500 Internal Error", + $pid = open2($reader, $writer, "cvs server") || fatal ("500 Internal Error", "Fatal Error - unable to open cvs for annotation"); # OK, first send the request to the server. A simplified example is: @@ -1208,11 +1207,6 @@ sub doAnnotate($$) { # were nicer about buffering, then we could just leave it open, I think. close ($writer) || die "cannot close: $!"; - http_header(); - - navigateHeader($scriptwhere,$pathname,$filename,$rev, "annotate"); - print "

Annotation of $pathname$filename, Revision $rev

\n"; - # Ready to get the responses from the server. # For example: # E Annotations for foo/xx @@ -1245,41 +1239,33 @@ sub doAnnotate($$) { } elsif ($words[0] eq "M") { $lineNr++; - (my $lrev = substr($_, 2, 13)) =~ y/ //d; - (my $lusr = substr($_, 16, 9)) =~ y/ //d; - my $line = substr($_, 36); - my $isCurrentRev = ($rev eq $lrev); + my $lrev = substr ($_, 2, 13); + my $lusr = substr ($_, 16, 9); + my $line = substr ($_, 36); # we should parse the date here .. if ($lrev eq $oldLrev) { - $revprint = sprintf('%-8s', ''); + $revprint = " "; } else { - $revprint = sprintf('%-8s', $lrev); - $revprint =~ s`\S+`$&`; # ` - $oldLusr = ''; + $revprint = $lrev; $oldLusr = ""; + $revprint =~ s`^(\S+)`$1`; # ` } if ($lusr eq $oldLusr) { - $usrprint = ''; + $usrprint = " "; } else { $usrprint = $lusr; } $oldLrev = $lrev; $oldLusr = $lusr; + # is there a less timeconsuming way to strip spaces ? + ($lrev = $lrev) =~ s/\s+//g; + my $isCurrentRev = ($rev eq $lrev); - # Set bold for text-based browsers only - graphical - # browsers show bold fonts a bit wider than regular fonts, - # so it looks irregular. - print "" if ($isCurrentRev && $is_textbased); - - printf "%s%s %-8s %4d:", - $revprint, - $isCurrentRev ? '!' : ' ', - $usrprint, - $lineNr; + print "" if ($isCurrentRev); + printf ("%8s%s%8s %4d:", $revprint, ($isCurrentRev ? "|" : " "), $usrprint, $lineNr); print spacedHtmlText($line, $d{'tabstop'}); - - print "" if ($isCurrentRev && $is_textbased); + print "" if ($isCurrentRev); } elsif ($words[0] eq "ok") { # We could complain about any text received after this, like the @@ -1698,7 +1684,7 @@ again: $state = "head"; goto again; } - if ($state eq "head" && /$LOG_REVSEPARATOR/o) { + if ($state eq "head" && /^----------------------------$/) { $state = "log"; $rev = undef; $date = undef; @@ -1708,7 +1694,8 @@ again: next; } if ($state eq "log") { - if (/$LOG_REVSEPARATOR/o || /$LOG_FILESEPARATOR/o) { + if (/^----------------------------$/ + || /^=============================/) { # End of a log entry. my $revbranch; ($revbranch = $rev) =~ s/\.\d+$//; @@ -1755,7 +1742,7 @@ again: $log = $log . $_; } } - if (/$LOG_FILESEPARATOR/o) { + if (/^===============/) { $state = "start"; next; } @@ -1829,7 +1816,7 @@ sub readLog($;$) { # log info # ---------------------------- logentry: - while (!/$LOG_FILESEPARATOR/o) { + while (!/^=========/) { $_ = <$fh>; last logentry if (!defined($_)); # EOF print "R:", $_ if ($verbose); @@ -1837,7 +1824,7 @@ sub readLog($;$) { $rev = $1; unshift(@allrevisions,$rev); } - elsif (/$LOG_FILESEPARATOR/o || /$LOG_REVSEPARATOR/o) { + elsif (/^========/ || /^----------------------------$/) { next logentry; } else { @@ -1871,7 +1858,7 @@ sub readLog($;$) { while (<$fh>) { print "L:", $_ if ($verbose); next line if (/^branches:\s/); - last line if (/$LOG_FILESEPARATOR/o || /$LOG_REVSEPARATOR/o); + last line if (/^----------------------------$/ || /^=========/); $log{$rev} .= $_; } print "E:", $_ if ($verbose); @@ -2491,7 +2478,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 ""; @@ -2846,7 +2833,7 @@ sub http_header(;$) { sub html_header($) { my ($title) = @_; - my $version = '$zRevision: 1.103 $ $kRevision: 1.33 $'; #' + my $version = '$zRevision: 1.103 $ $Revision: 3.28 $'; #' http_header(); print <