[BACK]Return to cvsweb.cgi CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / cvsweb

Diff for /cvsweb/cvsweb.cgi between version 1.1.1.10 and 3.27

version 1.1.1.10, 2000/10/07 07:50:18 version 3.27, 2000/09/28 18:06:58
Line 43 
Line 43 
 # SUCH DAMAGE.  # SUCH DAMAGE.
 #  #
 # $zId: cvsweb.cgi,v 1.103 2000/09/20 17:02:29 jumager Exp $  # $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$
 #  #
 ###  ###
   
Line 79  use vars qw (
Line 79  use vars qw (
     $tabstop $state $annTable $sel $curbranch @HideModules      $tabstop $state $annTable $sel $curbranch @HideModules
     $module $use_descriptions %descriptions @mytz $dwhere $moddate      $module $use_descriptions %descriptions @mytz $dwhere $moddate
     $use_moddate $has_zlib $gzip_open      $use_moddate $has_zlib $gzip_open
     $LOG_FILESEPARATOR $LOG_REVSEPARATOR  
 );  );
   
 sub printDiffSelect($);  sub printDiffSelect($);
Line 126  sub forbidden_module($);
Line 125  sub forbidden_module($);
 use Cwd;  use Cwd;
   
 # == EDIT this ==  # == EDIT this ==
 # Locations to search for user configuration, in order:  # User configuration is stored in
 for (  $config = undef;
      $ENV{CVSWEB_CONFIG},  
   for ($ENV{CVSWEB_CONFIG},
   #     '/home/knu/etc/cvsweb.conf',
      '/usr/local/etc/cvsweb.conf',       '/usr/local/etc/cvsweb.conf',
      getcwd() . '/cvsweb.conf'       getcwd . '/cvsweb.conf') {
     ) {    $config = $_ if defined($_) && -r $_;
     $config = $_ if defined($_) && -r $_;  
 }  }
   
 # == Configuration defaults ==  # == Configuration defaults ==
Line 146  $allow_version_select = 1;
Line 146  $allow_version_select = 1;
 # These are defined to allow checking with perl -cw  # These are defined to allow checking with perl -cw
 %CVSROOT = %MIRRORS = %DEFAULTVALUE = %ICONS = %MTYPES =  %CVSROOT = %MIRRORS = %DEFAULTVALUE = %ICONS = %MTYPES =
 %tags = %alltags = @tabcolors = ();  %tags = %alltags = @tabcolors = ();
 $cvstreedefault = $body_tag = $body_tag_for_src =  $cvstreedefault = $body_tag = $body_tag_for_src =
 $logo = $defaulttitle = $address =  $logo = $defaulttitle = $address =
 $long_intro = $short_instruction = $shortLogLen =  $long_intro = $short_instruction = $shortLogLen =
 $show_author = $dirtable = $tablepadding = $columnHeaderColorDefault =  $show_author = $dirtable = $tablepadding = $columnHeaderColorDefault =
Line 160  $checkout_magic = $show_subdir_lastmod = $show_log_in_
Line 160  $checkout_magic = $show_subdir_lastmod = $show_log_in_
 $navigationHeaderColor = $tableBorderColor = $markupLogColor =  $navigationHeaderColor = $tableBorderColor = $markupLogColor =
 $tabstop = $use_moddate = $moddate = $gzip_open = undef;  $tabstop = $use_moddate = $moddate = $gzip_open = undef;
   
 $LOG_FILESEPARATOR = q/^={77}$/;  
 $LOG_REVSEPARATOR = q/^-{28}$/;  
   
 ##### End of configuration variables #####  ##### End of configuration variables #####
   
 use Time::Local;  use Time::Local;
Line 283  foreach (keys %DEFAULTVALUE)
Line 280  foreach (keys %DEFAULTVALUE)
 }  }
   
 $barequery = "";  $barequery = "";
 my @barequery;  
 foreach (@stickyvars) {  foreach (@stickyvars) {
     # construct a query string with the sticky non default parameters set      # construct a query string with the sticky non default parameters set
     if (defined($input{$_}) && $input{$_} ne '' &&      if (defined($input{$_}) && $input{$_} ne '' &&
         !(defined($DEFAULTVALUE{$_}) && $input{$_} eq $DEFAULTVALUE{$_})) {          !(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 ?  # is there any query ?
 if (@barequery) {  if ($barequery) {
     $barequery = join('&', @barequery);  
     $query = "?$barequery";      $query = "?$barequery";
     $barequery = "&$barequery";      $barequery = "&" . $barequery;
 }  }
 else {  else {
     $query = "";      $query = "";
 }  }
 undef @barequery;  
   
 # get actual parameters  # get actual parameters
 $sortby = $input{"sortby"};  $sortby = $input{"sortby"};
Line 348  if ($input{'cvsroot'} && $CVSROOT{$input{'cvsroot'}}) 
Line 346  if ($input{'cvsroot'} && $CVSROOT{$input{'cvsroot'}}) 
 $cvsroot = $CVSROOT{$cvstree};  $cvsroot = $CVSROOT{$cvstree};
   
 # create icons out of description  # create icons out of description
 my $k;  foreach my $k (keys %ICONS) {
 foreach $k (keys %ICONS) {  
     no strict 'refs';      no strict 'refs';
     my ($itxt,$ipath,$iwidth,$iheight) = @{$ICONS{$k}};      my ($itxt,$ipath,$iwidth,$iheight) = @{$ICONS{$k}};
     if ($ipath) {      if ($ipath) {
Line 359  foreach $k (keys %ICONS) {
Line 356  foreach $k (keys %ICONS) {
         ${"${k}icon"} = $itxt;          ${"${k}icon"} = $itxt;
     }      }
 }  }
 undef $k;  
   
 my $config_cvstree = "$config-$cvstree";  my $config_cvstree = "$config-$cvstree";
   
Line 370  if (-f $config_cvstree) {
Line 366  if (-f $config_cvstree) {
                sprintf('Error in loading configuration file: %s<BR><BR>%s<BR>',                 sprintf('Error in loading configuration file: %s<BR><BR>%s<BR>',
                        $config_cvstree, &htmlify($@)));                         $config_cvstree, &htmlify($@)));
 }  }
 undef $config_cvstree;  
   
 $prcategories = '(?:' . join('|', @prcategories) . ')';  $prcategories = '(?:' . join('|', @prcategories) . ')';
 $prcgi .= '%s' if defined($prcgi) && $prcgi !~ /%s/;  $prcgi .= '%s' if defined($prcgi) && $prcgi !~ /%s/;
Line 936  sub htmlify($;$) {
Line 931  sub htmlify($;$) {
         if ($extra) {          if ($extra) {
             # get PR #'s as link ..              # get PR #'s as link ..
             if (defined($prcgi)) {              if (defined($prcgi)) {
                 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1 . &link($2, sprintf($prcgi, $2))`ie; # `;                  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;     # `;                  $string =~ s`\b${prcategories}/(\d+)\b`&link($&, sprintf($prcgi, $1))`igeo;     # `
             }              }
   
             # get manpage specs as link ..              # get manpage specs as link ..
             if (defined($mancgi)) {              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; # `
             }              }
         }          }
   
Line 982  sub spacedHtmlText($;$) {
Line 977  sub spacedHtmlText($;$) {
 sub link($$) {  sub link($$) {
         my($name, $where) = @_;          my($name, $where) = @_;
   
         return "<A HREF=\"$where\">$name</A>";          return "<A HREF=\"$where\">$name</A>\n";
 }  }
   
 sub revcmp($$) {  sub revcmp($$) {
Line 1147  sub doAnnotate($$) {
Line 1142  sub doAnnotate($$) {
     ($pathname = $where) =~ s/(Attic\/)?[^\/]*$//;      ($pathname = $where) =~ s/(Attic\/)?[^\/]*$//;
     ($filename = $where) =~ s/^.*\///;      ($filename = $where) =~ s/^.*\///;
   
       http_header();
   
       navigateHeader($scriptwhere,$pathname,$filename,$rev, "annotate");
       print "<h3 align=center>Annotation of $pathname$filename, Revision $rev</h3>\n";
   
     # this seems to be necessary      # this seems to be necessary
     $| = 1; $| = 0; # Flush      $| = 1; $| = 0; # Flush
   
Line 1156  sub doAnnotate($$) {
Line 1156  sub doAnnotate($$) {
     # the public domain.      # the public domain.
     # we could abandon the use of rlog, rcsdiff and co using      # we could abandon the use of rlog, rcsdiff and co using
     # the cvsserver in a similiar way one day (..after rewrite)      # 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");                                                                 "Fatal Error - unable to open cvs for annotation");
   
     # OK, first send the request to the server.  A simplified example is:      # OK, first send the request to the server.  A simplified example is:
Line 1208  sub doAnnotate($$) {
Line 1208  sub doAnnotate($$) {
     # were nicer about buffering, then we could just leave it open, I think.      # were nicer about buffering, then we could just leave it open, I think.
     close ($writer) || die "cannot close: $!";      close ($writer) || die "cannot close: $!";
   
     http_header();  
   
     navigateHeader($scriptwhere,$pathname,$filename,$rev, "annotate");  
     print "<h3 align=center>Annotation of $pathname$filename, Revision $rev</h3>\n";  
   
     # Ready to get the responses from the server.      # Ready to get the responses from the server.
     # For example:      # For example:
     #     E Annotations for foo/xx      #     E Annotations for foo/xx
Line 1245  sub doAnnotate($$) {
Line 1240  sub doAnnotate($$) {
         }          }
         elsif ($words[0] eq "M") {          elsif ($words[0] eq "M") {
             $lineNr++;              $lineNr++;
             (my $lrev = substr($_, 2, 13)) =~ y/ //d;              my $lrev = substr ($_, 2, 13);
             (my $lusr = substr($_, 16,  9)) =~ y/ //d;              my $lusr = substr ($_, 16,  9);
             my $line = substr($_, 36);              my $line = substr ($_, 36);
             my $isCurrentRev = ($rev eq $lrev);  
             # we should parse the date here ..              # we should parse the date here ..
             if ($lrev eq $oldLrev) {              if ($lrev eq $oldLrev) {
                 $revprint = sprintf('%-8s', '');                  $revprint = "             ";
             }              }
             else {              else {
                 $revprint = sprintf('%-8s', $lrev);                  $revprint = $lrev; $oldLusr = "";
                 $revprint =~ s`\S+`<a href="${scriptwhere}${barequery}#rev$1">$&</A>`;  # `                  $revprint =~ s`^(\S+)`<a href="${scriptwhere}${barequery}#rev$1">$1</A>`;       # `
                 $oldLusr = '';  
             }              }
             if ($lusr eq $oldLusr) {              if ($lusr eq $oldLusr) {
                 $usrprint = '';                  $usrprint = "         ";
             }              }
             else {              else {
                 $usrprint = $lusr;                  $usrprint = $lusr;
             }              }
             $oldLrev = $lrev;              $oldLrev = $lrev;
             $oldLusr = $lusr;              $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              print "<b>" if ($isCurrentRev);
             # browsers show bold fonts a bit wider than regular fonts,              printf ("%8s%s%8s %4d:", $revprint, ($isCurrentRev ? "|" : " "), $usrprint, $lineNr);
             # so it looks irregular.  
             print "<b>" if ($isCurrentRev && $is_textbased);  
   
             printf "%s%s %-8s %4d:",  
                     $revprint,  
                     $isCurrentRev ? '!' : ' ',  
                     $usrprint,  
                     $lineNr;  
             print spacedHtmlText($line, $d{'tabstop'});              print spacedHtmlText($line, $d{'tabstop'});
               print "</b>" if ($isCurrentRev);
             print "</b>" if ($isCurrentRev && $is_textbased);  
         }          }
         elsif ($words[0] eq "ok") {          elsif ($words[0] eq "ok") {
             # We could complain about any text received after this, like the              # We could complain about any text received after this, like the
Line 1698  again:
Line 1685  again:
             $state = "head";              $state = "head";
             goto again;              goto again;
         }          }
         if ($state eq "head" && /$LOG_REVSEPARATOR/o) {          if ($state eq "head" && /^----------------------------$/) {
             $state = "log";              $state = "log";
             $rev = undef;              $rev = undef;
             $date = undef;              $date = undef;
Line 1708  again:
Line 1695  again:
             next;              next;
         }          }
         if ($state eq "log") {          if ($state eq "log") {
             if (/$LOG_REVSEPARATOR/o || /$LOG_FILESEPARATOR/o) {              if (/^----------------------------$/
                   || /^=============================/) {
                 # End of a log entry.                  # End of a log entry.
                 my $revbranch;                  my $revbranch;
                 ($revbranch = $rev) =~ s/\.\d+$//;                  ($revbranch = $rev) =~ s/\.\d+$//;
Line 1755  again:
Line 1743  again:
                 $log = $log . $_;                  $log = $log . $_;
             }              }
         }          }
         if (/$LOG_FILESEPARATOR/o) {          if (/^===============/) {
             $state = "start";              $state = "start";
             next;              next;
         }          }
Line 1829  sub readLog($;$) {
Line 1817  sub readLog($;$) {
 # log info  # log info
 # ----------------------------  # ----------------------------
         logentry:          logentry:
         while (!/$LOG_FILESEPARATOR/o) {          while (!/^=========/) {
             $_ = <$fh>;              $_ = <$fh>;
             last logentry if (!defined($_));    # EOF              last logentry if (!defined($_));    # EOF
             print "R:", $_ if ($verbose);              print "R:", $_ if ($verbose);
Line 1837  sub readLog($;$) {
Line 1825  sub readLog($;$) {
                 $rev = $1;                  $rev = $1;
                 unshift(@allrevisions,$rev);                  unshift(@allrevisions,$rev);
             }              }
             elsif (/$LOG_FILESEPARATOR/o || /$LOG_REVSEPARATOR/o) {              elsif (/^========/ || /^----------------------------$/) {
                 next logentry;                  next logentry;
             }              }
             else {              else {
Line 1871  sub readLog($;$) {
Line 1859  sub readLog($;$) {
             while (<$fh>) {              while (<$fh>) {
                 print "L:", $_ if ($verbose);                  print "L:", $_ if ($verbose);
                 next line if (/^branches:\s/);                  next line if (/^branches:\s/);
                 last line if (/$LOG_FILESEPARATOR/o || /$LOG_REVSEPARATOR/o);                  last line if (/^----------------------------$/ || /^=========/);
                 $log{$rev} .= $_;                  $log{$rev} .= $_;
             }              }
             print "E:", $_ if ($verbose);              print "E:", $_ if ($verbose);
Line 2491  sub navigateHeader($$$$$) {
Line 2479  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.103 $  $kRevision: 1.33 $ -->';      print '<!-- CVSweb $zRevision: 1.103 $  $Revision$ -->';
     print "\n<TITLE>$path$filename - $title - $rev</TITLE></HEAD>\n";      print "\n<TITLE>$path$filename - $title - $rev</TITLE></HEAD>\n";
     print  "$body_tag_for_src\n";      print  "$body_tag_for_src\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 2846  sub http_header(;$) {
Line 2834  sub http_header(;$) {
   
 sub html_header($) {  sub html_header($) {
     my ($title) = @_;      my ($title) = @_;
     my $version = '$zRevision: 1.103 $  $kRevision: 1.33 $'; #'      my $version = '$zRevision: 1.103 $  $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"

Legend:
Removed from v.1.1.1.10  
changed lines
  Added in v.3.27

CVSweb