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

Diff for /cvsweb/cvsweb.cgi between version 4.26 and 4.29

version 4.26, 2019/11/26 12:04:55 version 4.29, 2019/11/29 13:39:50
Line 57  use vars qw (
Line 57  use vars qw (
   $VERSION $CheckoutMagic $MimeTypes $DEBUG    $VERSION $CheckoutMagic $MimeTypes $DEBUG
   $config $allow_version_select    $config $allow_version_select
   @CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr    @CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr
   %MIRRORS %DEFAULTVALUE %ICONS %MTYPES    %DEFAULTVALUE %ICONS %MTYPES
   %DIFF_COMMANDS @DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS    %DIFF_COMMANDS @DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS
   %alltags %fileinfo %tags @branchnames %nameprinted    %alltags %fileinfo %tags @branchnames %nameprinted
   %symrev %revsym @allrevisions %date %author @revdisplayorder    %symrev %revsym @allrevisions %date %author @revdisplayorder
Line 67  use vars qw (
Line 67  use vars qw (
   $is_links $is_lynx $is_w3m $is_msie $is_mozilla3 $is_textbased    $is_links $is_lynx $is_w3m $is_msie $is_mozilla3 $is_textbased
   %input $query $barequery $sortby $bydate $byrev $byauthor    %input $query $barequery $sortby $bydate $byrev $byauthor
   $bylog $byfile $defaultDiffType $logsort $cvstree $cvsroot    $bylog $byfile $defaultDiffType $logsort $cvstree $cvsroot
   $charset $output_filter    $charset $output_filter %CMD $allow_compress $backicon $diricon $fileicon
   @command_path %CMD $allow_compress $backicon $diricon $fileicon  
   $fullname $logo $defaulttitle $address $binfileicon    $fullname $logo $defaulttitle $address $binfileicon
   $long_intro $short_instruction $shortLogLen $show_author    $long_intro $short_instruction $shortLogLen $show_author
   $tablepadding $hr_breakable $showfunc $hr_ignwhite $hr_ignkeysubst    $tablepadding $hr_breakable $showfunc $hr_ignwhite $hr_ignkeysubst
Line 129  EOM
Line 128  EOM
   $MimeTypes = undef if $@;    $MimeTypes = undef if $@;
   
   $CheckoutMagic = '~checkout~';    $CheckoutMagic = '~checkout~';
     $CMD{$_} = "/usr/bin/$_" for (qw(cvs gzip rcsdiff rlog));
     $CMD{tar} = "/bin/tar";
 }  }
   
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
Line 167  sub plural_write($$);
Line 168  sub plural_write($$);
 sub readableTime($$);  sub readableTime($$);
 sub clickablePath($$);  sub clickablePath($$);
 sub chooseCVSRoot();  sub chooseCVSRoot();
 sub chooseMirror();  
 sub fileSortCmp();  sub fileSortCmp();
 sub download_url($$;$);  sub download_url($$;$);
 sub download_link($$$;$);  sub download_link($$$;$);
Line 195  $config = '/conf/cvsweb/cvsweb.conf';
Line 195  $config = '/conf/cvsweb/cvsweb.conf';
   
 ######## Configuration parameters #########  ######## Configuration parameters #########
   
 @CVSrepositories = @CVSROOT = %CVSROOT = %MIRRORS = %DEFAULTVALUE = %ICONS =  @CVSrepositories = @CVSROOT = %CVSROOT = %DEFAULTVALUE = %ICONS =
   %MTYPES = %tags = %alltags = %fileinfo = %DIFF_COMMANDS = ();    %MTYPES = %tags = %alltags = %fileinfo = %DIFF_COMMANDS = ();
   
 $logo = $defaulttitle =  $logo = $defaulttitle =
Line 645  if ($input{tarball}) {
Line 645  if ($input{tarball}) {
           'You cannot download the top level directory.');            'You cannot download the top level directory.');
   }    }
   
   my $istar = $ext eq '.tar.gz' || $ext eq '.tgz';    unless ($ext eq '.tar.gz' || $ext eq '.tgz') {
   if ($istar) {      fatal('404 Not Found', 'Unsupported archive type.');
     fatal('500 Internal Error', 'tar command not found.') unless $CMD{tar};  
     fatal('500 Internal Error', 'gzip command not found.') unless $CMD{gzip};  
   } else {  
     fatal('500 Internal Error', 'Unsupported archive type.');  
   }    }
   
   my $tmpexportdir;    my $tmpexportdir;
Line 689  if ($input{tarball}) {
Line 685  if ($input{tarball}) {
     local (*TAR_OUT);      local (*TAR_OUT);
   
     my (@cmd, $ctype);      my (@cmd, $ctype);
     if ($istar) {  
       my @tar = ($CMD{tar}, @tar_options, '-cf', '-', $basedir);        my @tar = ($CMD{tar}, @tar_options, '-cf', '-', $basedir);
       my @gzip = ($CMD{gzip}, @gzip_options, '-c');        my @gzip = ($CMD{gzip}, @gzip_options, '-c');
       push(@cmd, \@tar, '|', \@gzip);        push(@cmd, \@tar, '|', \@gzip);
       $ctype = 'application/x-gzip';        $ctype = 'application/x-gzip';
     }  
     push(@cmd, '>pipe', \*TAR_OUT);      push(@cmd, '>pipe', \*TAR_OUT);
   
     my ($h, $err) = startproc(@cmd);      my ($h, $err) = startproc(@cmd);
Line 788  if (-d $fullname) {
Line 782  if (-d $fullname) {
   
   # give direct access to dirs    # give direct access to dirs
   if ($where eq '/') {    if ($where eq '/') {
     chooseMirror();  
     chooseCVSRoot();      chooseCVSRoot();
   
   } else {    } else {
     print '<p>Current directory: <b>', clickablePath($where, 0), '</b>';      print '<p>Current directory: <b>', clickablePath($where, 0), '</b>';
     print "</p>\n";      print "</p>\n";
Line 1097  EOF
Line 1089  EOF
   
   if ($allow_tar && $filesfound) {    if ($allow_tar && $filesfound) {
     my ($basefile) = ($where =~ m,(?:.*/)?([^/]+),);      my ($basefile) = ($where =~ m,(?:.*/)?([^/]+),);
     my $havetar = $CMD{tar} && $CMD{gzip};      if (defined($basefile) && $basefile ne '') {
     if (defined($basefile) && $basefile ne '' && $havetar) {  
       my $q = ($query ? "$query;" : '?') . 'tarball=1';        my $q = ($query ? "$query;" : '?') . 'tarball=1';
       print "<hr />\n",        print "<hr />\n",
         '<div style="text-align: center">Download this directory in ';          '<div style="text-align: center">Download this directory in ';
Line 1575  sub safeglob($)
Line 1566  sub safeglob($)
   
   
 #  #
 # Searches @command_path for the given executable file.  
 #  
 sub search_path($)  
 {  
   my ($command) = @_;  
   for my $d (@command_path) {  
     my $cmd = catfile($d, $command);  
     return $cmd if (-x $cmd && !-d _);  
   }  
   return '';  
 }  
   
   
 #  
 # Gets the MIME type for the given file name.  # Gets the MIME type for the given file name.
 #  #
 sub getMimeType($;$)  sub getMimeType($;$)
Line 2427  sub getDirLogs($$@)
Line 2404  sub getDirLogs($$@)
   
   if ($linesread == 0) {    if ($linesread == 0) {
     fatal('500 Internal Error',      fatal('500 Internal Error',
           'Failed to spawn GNU rlog on <em>"%s"</em>.<br /><br />Did you set the <b><code>@command_path</code></b> in your configuration file correctly? (Currently: "<code>%s</code>")',            'Failed to spawn rlog on <em>"%s"</em>',
           htmlquote(join(', ', @files)), join(':', @command_path));            htmlquote(join(', ', @files)));
   }    }
   
   return @unreadable;    return @unreadable;
 }  }
   
Line 3479  Module path or alias:
Line 3455  Module path or alias:
 </p>  </p>
 </form>  </form>
 EOF  EOF
 }  
   
   
 sub chooseMirror()  
 {  
   # This code comes from the original BSD-cvsweb  
   # and may not be useful for your site; If you don't  
   # set %MIRRORS this won't show up, anyway.  
   scalar(%MIRRORS) or return;  
   
   # Should perhaps exclude the current site somehow...  
   print "\n<p>\nThis CVSweb is mirrored in\n";  
   
   my @tmp = map(&link(htmlquote($_), $MIRRORS{$_}), sort keys %MIRRORS);  
   my $tmp = pop (@tmp);  
   
   if (scalar(@tmp)) {  
     print join (', ', @tmp), ' and ';  
   }  
   
   print "$tmp.\n</p>\n";  
 }  }
   
   

Legend:
Removed from v.4.26  
changed lines
  Added in v.4.29

CVSweb