[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.21 and 1.1.1.25

version 1.1.1.21, 2001/01/12 04:17:16 version 1.1.1.25, 2001/05/07 17:19:27
Line 18 
Line 18 
 # Copyright (c) 1996-1998 Bill Fenner  # Copyright (c) 1996-1998 Bill Fenner
 #           (c) 1998-1999 Henner Zeller  #           (c) 1998-1999 Henner Zeller
 #           (c) 1999      Henrik Nordstrom  #           (c) 1999      Henrik Nordstrom
 #           (c) 2000      Akinori MUSHA  #           (c) 2000-2001 Akinori MUSHA
 # All rights reserved.  # All rights reserved.
 #  #
 # Redistribution and use in source and binary forms, with or without  # Redistribution and use in source and binary forms, with or without
Line 42 
Line 42 
 # 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.
 #  #
 # $zId: cvsweb.cgi,v 1.104 2000/11/01 22:05:12 hnordstrom Exp $  # $zId: cvsweb.cgi,v 1.106 2001/03/10 01:16:27 hnordstrom Exp $
 # $kId: cvsweb.cgi,v 1.63 2001/01/11 23:42:01 knu Exp $  # $Idaemons: /home/cvs/cvsweb/cvsweb.cgi,v 1.71 2001/05/07 17:13:42 knu Exp $
 #  #
 ###  ###
   
Line 52  require 5.000;
Line 52  require 5.000;
 use strict;  use strict;
   
 use vars qw (  use vars qw (
       $cvsweb_revision
     $mydir $uname $config $allow_version_select $verbose      $mydir $uname $config $allow_version_select $verbose
     @CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr      @CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr
     %MIRRORS %DEFAULTVALUE %ICONS %MTYPES      %MIRRORS %DEFAULTVALUE %ICONS %MTYPES
Line 138  sub forbidden_module($);
Line 139  sub forbidden_module($);
 ##### Start of Configuration Area ########  ##### Start of Configuration Area ########
 delete $ENV{PATH};  delete $ENV{PATH};
   
   $cvsweb_revision = '1.106' . '.' . (split(/ /,
    q$Idaemons: /home/cvs/cvsweb/cvsweb.cgi,v 1.71 2001/05/07 17:13:42 knu Exp $
   ))[2];
   
 use File::Basename;  use File::Basename;
   
 ($mydir) = (dirname($0) =~ /(.*)/); # untaint  ($mydir) = (dirname($0) =~ /(.*)/); # untaint
Line 248  $where =~ s|^/||;
Line 253  $where =~ s|^/||;
 $scriptname = defined($ENV{SCRIPT_NAME}) ? $ENV{SCRIPT_NAME} : '';  $scriptname = defined($ENV{SCRIPT_NAME}) ? $ENV{SCRIPT_NAME} : '';
 $scriptname =~ s|^/*|/|;  $scriptname =~ s|^/*|/|;
   
 # Let's workaround thttpd's stupidness..  # Let's workaround thttpd's stupidity..
 if ($scriptname =~ m|/$|) {  if ($scriptname =~ m|/$|) {
     $pathinfo .= '/';      $pathinfo .= '/';
     my $re = quotemeta $pathinfo;      my $re = quotemeta $pathinfo;
Line 304  if (-f $config) {
Line 309  if (-f $config) {
 } else {  } else {
    &fatal("500 Internal Error",     &fatal("500 Internal Error",
           'Configuration not found.  Set the variable <code>$config</code> '            'Configuration not found.  Set the variable <code>$config</code> '
           . 'in cvsweb.cgi, or the environment variable '            . 'in cvsweb.cgi to your <b>cvsweb.conf</b> configuration file first.');
           . '<code>CVSWEB_CONFIG</code>, to your <b>cvsweb.conf</b> '  
           . 'configuration file first.');  
 }  }
   
 undef %input;  undef %input;
Line 733  if (-d $fullname) {
Line 736  if (-d $fullname) {
   
             if ($_ eq '..' || -d "$fullname/$_") {              if ($_ eq '..' || -d "$fullname/$_") {
                 next if ($_ eq '..' && $where eq '/');                  next if ($_ eq '..' && $where eq '/');
                 my ($rev,$date,$log,$author,$filename) = @{$fileinfo{$_}}                  my ($rev,$date,$log,$author,$filename);
                   ($rev,$date,$log,$author,$filename) = @{$fileinfo{$_}}
                     if (defined($fileinfo{$_}));                      if (defined($fileinfo{$_}));
                 printf '<tr bgcolor="%s"><td>', $tabcolors[$dirrow % 2] if $dirtable;                  printf '<tr bgcolor="%s"><td>', $tabcolors[$dirrow % 2] if $dirtable;
                 if ($_ eq '..') {                  if ($_ eq '..') {
Line 747  if (-d $fullname) {
Line 751  if (-d $fullname) {
                     print " ", &link("Previous Directory", $url);                      print " ", &link("Previous Directory", $url);
                 }                  }
                 else {                  else {
                     $url = urlencode($_) . "/$query";                      $url = './' . urlencode($_) . "/$query";
                     print "<A NAME=\"$_\"></A>";                      print "<A NAME=\"$_\"></A>";
                     if ($nofilelinks) {                      if ($nofilelinks) {
                         print $diricon;                          print $diricon;
Line 810  if (-d $fullname) {
Line 814  if (-d $fullname) {
             }              }
             elsif (s/,v$//) {              elsif (s/,v$//) {
                 $fileurl = ($attic ? "Attic/" : "") . urlencode($_);                  $fileurl = ($attic ? "Attic/" : "") . urlencode($_);
                 $url = $fileurl . $query;                  $url = './' . $fileurl . $query;
                 my $rev = '';                  my $rev = '';
                 my $date = '';                  my $date = '';
                 my $log = '';                  my $log = '';
Line 908  if (-d $fullname) {
Line 912  if (-d $fullname) {
                     &link("Download this directory in tarball",                      &link("Download this directory in tarball",
                           # Mangle the filename so browsers show a reasonable                            # Mangle the filename so browsers show a reasonable
                           # filename to download.                            # filename to download.
                           "$basefile.tar.gz$query".                            "./$basefile.tar.gz$query".
                           ($query ? "&" : "?")."tarball=1"),                            ($query ? "&" : "?")."tarball=1"),
                             "</DIV>";                              "</DIV>";
             }              }
Line 1222  sub spacedHtmlText($;$) {
Line 1226  sub spacedHtmlText($;$) {
 sub link($$) {  sub link($$) {
         my($name, $url) = @_;          my($name, $url) = @_;
   
           $url =~ s/:/sprintf("%%%02x", ord($&))/eg if $url =~ /^[^a-z]/; # relative
   
         sprintf '<A HREF="%s">%s</A>', hrefquote($url), $name;          sprintf '<A HREF="%s">%s</A>', hrefquote($url), $name;
 }  }
   
Line 1299  sub safeglob($) {
Line 1305  sub safeglob($) {
                                 push(@results, "$dirname/" .$_);                                  push(@results, "$dirname/" .$_);
                         }                          }
                 }                  }
                   closedir($dh);
         }          }
   
         @results;          @results;
Line 1407  sub doAnnotate($$) {
Line 1414  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", @cvs_options, "server")      $pid = open2($reader, $writer, $CMD{cvs}, @cvs_options, "server")
       || fatal ("500 Internal Error", "Fatal Error - unable to open cvs for annotation");        || fatal ("500 Internal Error", "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 1698  sub cvswebMarkup($$$) {
Line 1705  sub cvswebMarkup($$$) {
         print "</PRE>";          print "</PRE>";
     }      }
     else {      else {
         print "<PLAINTEXT>\n", <$filehandle>;          print "<PRE>";
           while (<$filehandle>) {
               print htmlquote($_);
           }
           print "</PRE>";
     }      }
 }  }
   
Line 1765  sub doDiff($$$$$$) {
Line 1776  sub doDiff($$$$$$) {
   
             while (($re1, $re2) = each %funcline_regexp) {              while (($re1, $re2) = each %funcline_regexp) {
                 if ($fullname =~ /$re1/) {                  if ($fullname =~ /$re1/) {
                     push @difftype, '-F', '$re2';                      push @difftype, '-F', $re2;
                     last;                      last;
                 }                  }
             }              }
Line 2634  sub human_readable_diff($){
Line 2645  sub human_readable_diff($){
   print "<br>Tag: $sym2\n" if ($sym1);    print "<br>Tag: $sym2\n" if ($sym1);
   print "</th>\n";    print "</th>\n";
   
   my $fs = "<font face=\"$difffontface\" size=\"$difffontsize\">";    my $fs = "<font face=\"$difffontface\" size=\"$difffontsize\"><tt>";
   my $fe = "</font>";    my $fe = "</tt></font>";
   
   my $leftRow = 0;    my $leftRow = 0;
   my $rightRow = 0;    my $rightRow = 0;
Line 2751  sub human_readable_diff($){
Line 2762  sub human_readable_diff($){
 sub navigateHeader($$$$$) {  sub navigateHeader($$$$$) {
     my ($swhere,$path,$filename,$rev,$title) = @_;      my ($swhere,$path,$filename,$rev,$title) = @_;
     $swhere = "" if ($swhere eq $scriptwhere);      $swhere = "" if ($swhere eq $scriptwhere);
     $swhere = urlencode($filename) if ($swhere eq "");      $swhere = './', urlencode($filename) if ($swhere eq "");
     print qq`<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">`;  
     print "<HTML>\n<HEAD>\n";      print <<EOF;
     print qq`<META name="robots" content="nofollow">\n`;  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     print '<!-- CVSweb $zRevision: 1.104 $  $kRevision: 1.63 $ -->';  <HTML>
     print "\n<TITLE>$path$filename - $title - $rev</TITLE></HEAD>\n";  <HEAD>
     print  "$body_tag_for_src\n";  <META name="robots" content="nofollow">
     print "<table width=\"100%\" border=0 cellspacing=0 cellpadding=1 bgcolor=\"$navigationHeaderColor\">";  <!-- knu-cvsweb $cvsweb_revision -->
     print "<tr valign=bottom><td>";  <TITLE>$path$filename - $title - $rev</TITLE></HEAD>
   $body_tag_for_src
   <table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="$navigationHeaderColor">
   <tr valign=bottom><td>
   EOF
   
     print &link($backicon, "$swhere$query#rev$rev");      print &link($backicon, "$swhere$query#rev$rev");
     print "</a> <b>Return to ", &link("$filename","$swhere$query#rev$rev")," CVS log";      print "<b>Return to ", &link($filename,"$swhere$query#rev$rev")," CVS log";
     print "</b> $fileicon</td>";      print "</b> $fileicon</td>";
   
     print "<td align=right>$diricon <b>Up to ", &clickablePath($path, 1), "</b></td>";      print "<td align=right>$diricon <b>Up to ", &clickablePath($path, 1), "</b></td>";
Line 2979  sub download_link($$$;$) {
Line 2995  sub download_link($$$;$) {
     my ($url, $revision, $textlink, $mimetype) = @_;      my ($url, $revision, $textlink, $mimetype) = @_;
     my ($fullurl) = download_url($url, $revision, $mimetype);      my ($fullurl) = download_url($url, $revision, $mimetype);
   
       $fullurl =~ s/:/sprintf("%%%02x", ord($&))/eg;
   
     printf '<A HREF="%s"', hrefquote("$fullurl$barequery");      printf '<A HREF="%s"', hrefquote("$fullurl$barequery");
   
     if ($open_extern_window && (!defined($mimetype) || $mimetype ne "text/x-cvsweb-markup")) {      if ($open_extern_window && (!defined($mimetype) || $mimetype ne "text/x-cvsweb-markup")) {
Line 3150  sub http_header(;$) {
Line 3168  sub http_header(;$) {
   
 sub html_header($) {  sub html_header($) {
     my ($title) = @_;      my ($title) = @_;
     my $version = '$zRevision: 1.104 $  $kRevision: 1.63 $'; #'  
     http_header("text/html");      http_header("text/html");
     print <<EOH;      print <<EOH;
 <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"  <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"
Line 3159  sub html_header($) {
Line 3176  sub html_header($) {
 <head>  <head>
 <meta name="robots" content="nofollow">  <meta name="robots" content="nofollow">
 <title>$title</title>  <title>$title</title>
 <!-- CVSweb $version -->  <!-- knu-cvsweb $cvsweb_revision -->
 </head>  </head>
 $body_tag  $body_tag
 $logo <h1 align="center">$title</h1>  $logo <h1 align="center">$title</h1>
Line 3176  sub link_tags($) {
Line 3193  sub link_tags($) {
     my ($fileurl,$filename);      my ($fileurl,$filename);
   
     ($filename = $where) =~ s/^.*\///;      ($filename = $where) =~ s/^.*\///;
     $fileurl = urlencode($filename);      $fileurl = './' . urlencode($filename);
   
     foreach my $sym (split(", ", $tags)) {      foreach my $sym (split(", ", $tags)) {
         $ret .= ",\n" if ($ret ne "");          $ret .= ",\n" if ($ret ne "");

Legend:
Removed from v.1.1.1.21  
changed lines
  Added in v.1.1.1.25

CVSweb