[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.35 and 1.1.1.36

version 1.1.1.35, 2002/09/30 19:43:49 version 1.1.1.36, 2002/09/30 19:48:52
Line 45 
Line 45 
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF  # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.  # SUCH DAMAGE.
 #  #
 #  FreeBSD: projects/cvsweb/cvsweb.cgi,v 1.119 2002/07/23 13:58:32 scop Exp  # $FreeBSD: projects/cvsweb/cvsweb.cgi,v 1.119.2.6 2002/09/26 20:56:05 scop Exp $
 # $zId: cvsweb.cgi,v 1.112 2001/07/24 13:03:16 hzeller Exp $  # $zId: cvsweb.cgi,v 1.112 2001/07/24 13:03:16 hzeller Exp $
 # $Idaemons: /home/cvs/cvsweb/cvsweb.cgi,v 1.84 2001/10/07 20:50:10 knu Exp $  # $Idaemons: /home/cvs/cvsweb/cvsweb.cgi,v 1.84 2001/10/07 20:50:10 knu Exp $
 # $FreeBSD: www/en/cgi/cvsweb.cgi,v 1.86 2002/09/26 22:18:25 scop Exp $  
 #  #
 ###  ###
   
Line 94  use vars qw (
Line 93  use vars qw (
     $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
     $allow_tar @tar_options @gzip_options @zip_options @cvs_options      $allow_tar @tar_options @gzip_options @zip_options @cvs_options
     $LOG_FILESEPARATOR $LOG_REVSEPARATOR      @annotate_options $LOG_FILESEPARATOR $LOG_REVSEPARATOR
     $tmpdir $HTML_DOCTYPE $HTML_META      $tmpdir $HTML_DOCTYPE $HTML_META
 );  );
   
Line 150  sub forbidden_module($);
Line 149  sub forbidden_module($);
 ##### Start of Configuration Area ########  ##### Start of Configuration Area ########
 delete $ENV{PATH};  delete $ENV{PATH};
   
 $cvsweb_revision = '2.0.5';  $cvsweb_revision = '2.0.6';
   
 use File::Basename ();  use File::Basename ();
   
Line 236  $LOG_REVSEPARATOR  = q/^-{28}$/;
Line 235  $LOG_REVSEPARATOR  = q/^-{28}$/;
         },          },
 );  );
   
 $cgi_style::hsty_base = 'http://www.FreeBSD.org';  
 $_ = q$FreeBSD: www/en/cgi/cvsweb.cgi,v 1.86 2002/09/26 22:18:25 scop Exp $;  
 @_ = split;  
 $cgi_style::hsty_date = "@_[3,4]";  
   
 # warningproof  
 0 if $cgi_style::hsty_base ne $cgi_style::hsty_date;  
   
 package cgi_style;  
 require "$main::mydir/cgi-style.pl";  
 package main;  
   
 $HTML_DOCTYPE =  $HTML_DOCTYPE =
   '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';    '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
   
Line 481  if ($input{'cvsroot'} && $CVSROOT{$input{'cvsroot'}}) 
Line 468  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 494  foreach $k (keys %ICONS) {
Line 480  foreach $k (keys %ICONS) {
                 ${"${k}icon"} = $itxt;                  ${"${k}icon"} = $itxt;
         }          }
 }  }
 undef $k;  
   
 my $config_cvstree = "$config-$cvstree";  my $config_cvstree = "$config-$cvstree";
   
Line 825  if (-d $fullname) {
Line 810  if (-d $fullname) {
         my $filesexists;          my $filesexists;
         my $filesfound;          my $filesfound;
   
         foreach (sort { &fileSortCmp } @dir) {          foreach my $file (sort { &fileSortCmp } @dir) {
                 if ($_ eq '.') {  
                         next;  
                 }  
   
                   next if ($file eq '.');
   
                 # ignore CVS lock and stale NFS files                  # ignore CVS lock and stale NFS files
                 next if (/^#cvs\.|^,|^\.nfs/);                  next if ($file =~ /^#cvs\.|^,|^\.nfs/);
   
                 # Check whether to show the CVSROOT path                  # Check whether to show the CVSROOT path
                 next if ($input{'hidecvsroot'} && ($_ eq 'CVSROOT'));                  next if ($input{'hidecvsroot'} && $file eq 'CVSROOT');
   
                 # Check whether the module is in the restricted list                  # Check whether the module is in the restricted list
                 next if ($_ && &forbidden_module($_));                  next if ($file && &forbidden_module($file));
   
                 # Ignore non-readable files                  # Ignore non-readable files
                 next if ($input{'hidenonreadable'} && !(-r "$fullname/$_"));                  next if ($input{'hidenonreadable'} && !(-r "$fullname/$file"));
   
                 if (s|^Attic/||) {                  if ($file =~ s|^Attic/||) {
                         $attic = " (in the Attic)&nbsp;" . $hideAtticToggleLink;                          $attic = " (in the Attic)&nbsp;" . $hideAtticToggleLink;
                 } else {                  } else {
                         $attic = "";                          $attic = "";
                 }                  }
   
                 if ($_ eq '..' || -d "$fullname/$_") {                  if ($file eq '..' || -d "$fullname/$file") {
                         next if ($_ eq '..' && $where eq '/');                          next if ($file eq '..' && $where eq '/');
                         my ($rev, $date, $log, $author, $filename);                          my ($rev, $date, $log, $author, $filename) =
                         ($rev, $date, $log, $author, $filename) =                              @{$fileinfo{$file}}
                             @{$fileinfo{$_}}                              if (defined($fileinfo{$file}));
                             if (defined($fileinfo{$_}));  
                         printf "<tr style=\"background-color: %s\">\n<td>",                          printf "<tr style=\"background-color: %s\">\n<td>",
                              $tabcolors[$dirrow % 2] if $dirtable;                               $tabcolors[$dirrow % 2] if $dirtable;
   
                         if ($_ eq '..') {                          if ($file eq '..') {
                                 $url = "../$query";                                  $url = "../$query";
                                 if ($nofilelinks) {                                  if ($nofilelinks) {
                                         print $backicon;                                          print $backicon;
Line 866  if (-d $fullname) {
Line 849  if (-d $fullname) {
                                 }                                  }
                                 print '&nbsp;', &link("Parent Directory", $url);                                  print '&nbsp;', &link("Parent Directory", $url);
                         } else {                          } else {
                                 $url = './' . urlencode($_) . "/$query";                                  $url = './' . urlencode($file) . "/$query";
                                 print "<a name=\"$_\"></a>";                                  print "<a name=\"$file\"></a>";
   
                                 if ($nofilelinks) {                                  if ($nofilelinks) {
                                         print $diricon;                                          print $diricon;
                                 } else {                                  } else {
                                         print &link($diricon, $url);                                          print &link($diricon, $url);
                                 }                                  }
                                 print '&nbsp;', &link("$_/", $url), $attic;                                  print '&nbsp;', &link("$file/", $url), $attic;
   
                                 if ($_ eq "Attic") {                                  if ($file eq "Attic") {
                                         print "&nbsp; ";                                          print "&nbsp; ";
                                         print &link(                                          print &link(
                                                 "[Don't hide]",                                                  "[Don't hide]",
Line 919  if (-d $fullname) {
Line 902  if (-d $fullname) {
                                 }                                  }
                         } else {                          } else {
                                 my ($dwhere) =                                  my ($dwhere) =
                                     ($where ne "/" ? $where : "") . $_;                                      ($where ne "/" ? $where : "") . $file;
   
                                 if ($use_descriptions                                  if ($use_descriptions
                                     && defined $descriptions{$dwhere})                                      && defined $descriptions{$dwhere})
Line 946  if (-d $fullname) {
Line 929  if (-d $fullname) {
                                 print "<br>\n";                                  print "<br>\n";
                         }                          }
                         $dirrow++;                          $dirrow++;
                 } elsif (s/,v$//) {                  } elsif ($file =~ s/,v$//) {
   
                         # Skip forbidden files now so we'll give no hint                          # Skip forbidden files now so we'll give no hint
                         # about their existence.  This should probably have                          # about their existence.  This should probably have
                         # been done earlier, but it's straightforward here.                          # been done earlier, but it's straightforward here.
                         next if forbidden_file("$fullname/$_");                          next if forbidden_file("$fullname/$file");
   
                         $fileurl = ($attic ? "Attic/" : "") . urlencode($_);                          $fileurl = ($attic ? "Attic/" : "") . urlencode($file);
                         $url = './' . $fileurl . $query;                          $url = './' . $fileurl . $query;
                         my $rev    = '';  
                         my $date   = '';  
                         my $log    = '';  
                         my $author = '';  
                         $filesexists++;                          $filesexists++;
                         next if (!defined($fileinfo{$_}));                          next if (!defined($fileinfo{$file}));
                         ($rev, $date, $log, $author) = @{$fileinfo{$_}};                          my ($rev, $date, $log, $author) = @{$fileinfo{$file}};
                         $filesfound++;                          $filesfound++;
                         printf "<tr style=\"background-color: %s\">\n<td>",                          printf "<tr style=\"background-color: %s\">\n<td>",
                             $tabcolors[$dirrow % 2] if $dirtable;                              $tabcolors[$dirrow % 2] if $dirtable;
                         print "<a name=\"$_\"></a>";                          print "<a name=\"$file\"></a>";
   
                         if ($nofilelinks) {                          if ($nofilelinks) {
                                 print $fileicon;                                  print $fileicon;
                         } else {                          } else {
                                 print &link($fileicon, $url);                                  print &link($fileicon, $url);
                         }                          }
                         print '&nbsp;', &link($_, $url), $attic;                          print '&nbsp;', &link(htmlquote($file), $url), $attic;
                         print "</td>\n<td>&nbsp;" if ($dirtable);                          print "</td>\n<td>&nbsp;" if ($dirtable);
                         download_link($fileurl, $rev, $rev,                          download_link($fileurl, $rev, $rev,
                                 $defaultViewable ? "text/x-cvsweb-markup" :                                  $defaultViewable ? "text/x-cvsweb-markup" :
Line 1426  sub spacedHtmlText($;$) {
Line 1405  sub spacedHtmlText($;$) {
         return $_;          return $_;
 }  }
   
   # Note that this doesn't htmlquote the first argument...
 sub link($$) {  sub link($$) {
         my ($name, $url) = @_;          my ($name, $url) = @_;
   
Line 1627  sub doAnnotate($$) {
Line 1607  sub doAnnotate($$) {
         $| = 1;          $| = 1;
         $| = 0;    # Flush          $| = 0;    # Flush
   
           # Work around a mod_perl bug (?) in order to make open2() work.
           # Search for "untie STDIN" in mod_perl mailing list archives.
           my $old_stdin;
           if ($is_mod_perl && ($old_stdin = tied *STDIN)) {
             local $^W = undef;
             untie *STDIN;
           }
   
         # this annotate version is based on the          # this annotate version is based on the
         # cvs annotate-demo Perl script by Cyclic Software          # cvs annotate-demo Perl script by Cyclic Software
         # It was written by Cyclic Software, http://www.cyclic.com/, and is in          # It was written by Cyclic Software, http://www.cyclic.com/, and is in
         # 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, $CMD{cvs}, @cvs_options, "server")          $pid = open2($reader, $writer, $CMD{cvs}, @annotate_options, 'server')
             or fatal("500 Internal Error",              or fatal("500 Internal Error",
                      'Fatal Error - unable to open cvs for annotation');                       'Fatal Error - unable to open cvs for annotation');
   
           # Re-tie STDIN if we fiddled around with it earlier, just to be sure.
           tie(*STDIN, ref($old_stdin), $old_stdin) if ($old_stdin && !tied(*STDIN));
   
         # OK, first send the request to the server.  A simplified example is:          # OK, first send the request to the server.  A simplified example is:
         #     Root /home/kingdon/zwork/cvsroot          #     Root /home/kingdon/zwork/cvsroot
         #     Argument foo/xx          #     Argument foo/xx
Line 1780  sub doAnnotate($$) {
Line 1771  sub doAnnotate($$) {
         } else {          } else {
                 print "</pre>";                  print "</pre>";
         }          }
           html_footer();
   
         close($reader) or warn "cannot close: $!";          close($reader) or warn "cannot close: $!";
         wait;          wait;
 }  }
Line 2122  sub getDirLogs($$@) {
Line 2115  sub getDirLogs($$@) {
         push (@files, &safeglob("$DirName/*,v"));          push (@files, &safeglob("$DirName/*,v"));
         push (@files, &safeglob("$DirName/Attic/*,v"))          push (@files, &safeglob("$DirName/Attic/*,v"))
             if (!$input{'hideattic'});              if (!$input{'hideattic'});
         foreach $file (@otherFiles) {          foreach my $file (@otherFiles) {
                 push (@files, "$DirName/$file");                  push (@files, "$DirName/$file");
         }          }
   
Line 3632  sub http_header(;$) {
Line 3625  sub http_header(;$) {
 sub html_header($) {  sub html_header($) {
         my ($title) = @_;          my ($title) = @_;
         http_header("text/html");          http_header("text/html");
   
         (my $header = &cgi_style::html_header) =~ s,\A.*</head>\n,,s;  
   
         print <<EOH;          print <<EOH;
 $HTML_DOCTYPE  $HTML_DOCTYPE
 <html>  <html>
 <head>  <head>
 <title>$title</title>  <title>$title</title>
 $HTML_META</head>  $HTML_META</head>
 $header  $body_tag
   $logo <h1 align="center">$title</h1>
 EOH  EOH
 }  }
   
 sub html_footer() {  sub html_footer() {
         return &cgi_style::html_footer;          print "<hr noshade>\n<address>$address</address>\n" if $address;
           print "</body>\n</html>\n";
 }  }
   
 sub link_tags($) {  sub link_tags($) {

Legend:
Removed from v.1.1.1.35  
changed lines
  Added in v.1.1.1.36

CVSweb