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

Diff for /cvsweb/cvsweb.cgi between version 4.18 and 4.19

version 4.18, 2019/11/11 14:37:54 version 4.19, 2019/11/11 14:56:27
Line 83  use vars qw (
Line 83  use vars qw (
   $allow_tar @tar_options @gzip_options @zip_options @cvs_options    $allow_tar @tar_options @gzip_options @zip_options @cvs_options
   @annotate_options @rcsdiff_options    @annotate_options @rcsdiff_options
   $HTML_DOCTYPE $HTML_META $cssurl $CSS $cvshistory_url    $HTML_DOCTYPE $HTML_META $cssurl $CSS $cvshistory_url
   $allow_enscript @enscript_options %enscript_types  
 );  );
   
 require Compress::Zlib;  require Compress::Zlib;
Line 150  sub config_error($$);
Line 149  sub config_error($$);
 sub redirect($;$);  sub redirect($;$);
 sub safeglob($);  sub safeglob($);
 sub search_path($);  sub search_path($);
 sub getEnscriptHL($);  
 sub getMimeType($;$);  sub getMimeType($;$);
 sub head($;$);  sub head($;$);
 sub scan_directives(@);  sub scan_directives(@);
 sub openOutputFilter();  sub openOutputFilter();
 sub doAnnotate($$);  sub doAnnotate($$);
 sub doCheckout($$$);  sub doCheckout($$$);
 sub doEnscript($$$;$);  
 sub cvswebMarkup($$$$$$;$);  sub cvswebMarkup($$$$$$;$);
 sub viewable($);  sub viewable($);
 sub doDiff($$$$$$);  sub doDiff($$$$$$);
Line 534  foreach (@stickyvars) {
Line 531  foreach (@stickyvars) {
   }    }
 }  }
   
 if ($allow_enscript) {  
   push(@DIFFTYPES, qw(uc cc));  
   @DIFFTYPES{qw(uc cc)} = (  
     {  
      'descr'   => 'unified, colored',  
      'opts'    => ['-u'],  
      'colored' => 0,  
     },  
     {  
      'descr'   => 'context, colored',  
      'opts'    => ['-c'],  
      'colored' => 0,  
     },  
   );  
 } else {  
   # No Enscript -> respect difftype, but don't offer colorization.  
   if ($input{f} && $input{f} =~ /^([ucs])c$/) {  
     $input{f} = $1;  
   }  
 }  
   
 # is there any query ?  # is there any query ?
 if (@barequery) {  if (@barequery) {
   $barequery = join (';', @barequery);    $barequery = join (';', @barequery);
Line 1688  sub search_path($)
Line 1664  sub search_path($)
   
   
 #  #
 # Gets the enscript(1) highlight mode corresponding to the given filename,  
 # or undef if unsupported.  
 #  
 sub getEnscriptHL($)  
 {  
   return undef unless $allow_enscript;  
   my ($filename) = @_;  
   while (my ($hl, $regex) = each %enscript_types) {  
     return $hl if ($filename =~ $regex);  
   }  
   return undef;  
 }  
   
   
 #  
 # Gets the MIME type for the given file name.  # Gets the MIME type for the given file name.
 #  #
 sub getMimeType($;$)  sub getMimeType($;$)
Line 2130  EOF
Line 2091  EOF
     printf '<embed src="%s" width="100%%" height="100%%" /><br />',      printf '<embed src="%s" width="100%%" height="100%%" /><br />',
       $url . $barequery;        $url . $barequery;
   } else {    } else {
   
     print "<pre>\n";      print "<pre>\n";
     my $linenumbers = $input{ln} || 0;      my $linenumbers = $input{ln} || 0;
   
     if (my $enscript_hl = getEnscriptHL($filename)) {  
       doEnscript($filehandle, $enscript_hl, $linenumbers);  
   
     } else {  
       my $ln  = 0;        my $ln  = 0;
       my @buf = ();        my @buf = ();
       my $ts  = undef;        my $ts  = undef;
Line 2157  EOF
Line 2112  EOF
         }          }
         print $preformat_in_markup ? spacedHtmlText($_, $ts) : htmlquote($_);          print $preformat_in_markup ? spacedHtmlText($_, $ts) : htmlquote($_);
       }        }
     }  
   
     print "</pre>\n";      print "</pre>\n";
   }    }
   html_footer();    html_footer();
Line 2301  sub doDiff($$$$$$)
Line 2254  sub doDiff($$$$$$)
     html_footer();      html_footer();
     gzipclose();      gzipclose();
     exit;      exit;
   
   } elsif ($f =~ /^([ucs])c$/) {  
     #  
     # Enscript colored diff.  
     #  
     my $hl = 'diff';  
     $hl .= $1 if ($1 eq 'u' || $1 eq 's');  
     (my $where_nd = $where)       =~ s/\.diff$//;  
     (my $pathname = $where_nd)    =~ s|((?<=/)Attic/)?[^/]*$||;  
     (my $filename = $where_nd)    =~ s|^.*/||;  
     (my $swhere   = $scriptwhere) =~ s|\.diff$||;  
     navigateHeader($swhere, $pathname, $filename, $rev2, 'diff');  
     printf(<<EOF, $where_nd, $rev1, $rev2);  
 <h3 style="text-align: center">Diff for /%s between versions %s and %s</h3>  
 <pre>  
 EOF  
     doEnscript(\$fh, $hl, 0, 'cvsweb_diff');  
     print <<EOF;  
 </pre>  
 <hr style="width: 100%" />  
 <form method="get" action="$scriptwhere">  
 EOF  
     printDiffSelectStickyVars();  
     print 'Diff format: ';  
     printDiffSelect();  
     print "<input type=\"submit\" value=\"Show\" />\n</form>\n";  
     html_footer();  
     gzipclose();  
     exit;  
   
   } else {    } else {
     #      #
     # Plain diff.      # Plain diff.
Line 3450  EOF
Line 3373  EOF
 </form>  </form>
 <br clear="all" />  <br clear="all" />
 EOF  EOF
 }  
   
   
 sub doEnscript($$$;$)  
 {  
   my ($filehandle, $highlight, $linenumbers, $lang) = @_;  
   $lang ||= 'cvsweb';  
   
   my @cmd = ($CMD{enscript},  
              @enscript_options,  
              '-q', "--language=$lang", '-o', '-', "--highlight=$highlight");  
   
   local *ENSCRIPT_OUT;  
   my ($h, $err) =  
     startproc(\@cmd, $filehandle, '>pipe', \*ENSCRIPT_OUT);  
   fatal('500 Internal Error', $err) unless $h;  
   
   # We could short-circuit and have enscript output directly to STDOUT above,  
   # but that doesn't work with mod_perl (at least some 1.99 versions).  
   if ($linenumbers) {  
     my $ln = 0;  
     while (<ENSCRIPT_OUT>) {  
       printf '<a id="l%d" class="src">%5d: </a>', (++$ln) x 2;  
       print $_;  
     }  
   } else {  
     local $/ = undef;  
     print <ENSCRIPT_OUT>;  
   }  
   $h->finish();  
 }  }
   
   

Legend:
Removed from v.4.18  
changed lines
  Added in v.4.19

CVSweb