From: wolf
Date: Mon, 4 Mar 2002 10:19:28 +0000 (+0000)
Subject: Check in new version 1.91 of this script.
X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f47e667c28d9cfe2ee3da9d794213a5defd7d03;p=dealii-svn.git
Check in new version 1.91 of this script.
git-svn-id: https://svn.dealii.org/trunk@5543 0785d39b-7218-0410-832d-ea1e28bc413d
---
diff --git a/deal.II/doc/auto/scripts/cvs2html b/deal.II/doc/auto/scripts/cvs2html
index 67241ce054..9416092d2f 100644
--- a/deal.II/doc/auto/scripts/cvs2html
+++ b/deal.II/doc/auto/scripts/cvs2html
@@ -3,9 +3,9 @@
# Perl program to transform the 'cvs log' output to HTML
#
# Perl program to transform the 'cvs log' output to HTML.
-# The HTML output will show the revision log history,
-# differences between versions and enable a flexible
-# configuration of the amount of information the user
+# The HTML output will show the revision log history,
+# differences between versions and enable a flexible
+# configuration of the amount of information the user
# like to see from the CVS repository.
# cvs2html can be used for any type of cvs archive.
@@ -16,70 +16,138 @@
# ** perl version 5.003 or newer **
#
# cvs2html should run on any Unix compatible machine
-# with the above programs.
-# Test machine: Linux RedHat 6.2 with Perl 5.005
+# with the above programs.
+# Test machine: Linux RedHat 7.2 with Perl 5.6.0
#
# Usage :
#
# type cvs2html with no arguments to display basic help
# or type cvs2html -h to get more help
-
-# Changelog
+# Changelog
# Ver Date Who did it What happened
# -------------------------------------------------------------------------
+#
+# 1.91 2002-01-13 Jacob Sparre Andersen Major overhaul of the code
+# and Peter Toft in order to generate HTML 4.0
+# compliant code. Many bugs corrected.
+#
+# 1.90 2001-09-07 Stefan Kost A few "cosmetical" corrections.
+#
+# 1.89 2001-09-06 Stefan Kost * "back to main" links in chronofile
+# only if frames==1
+# * subs html_header/html_footer
+# * $cvs2html_diff is now called $diffdirname
+# (in preparation for more subdirs)
+# and defaults to just "diff"
+# * sub cvsrootinfo (with extended infos)
+# * the ususal cosmetical fixes here and there
+# * both halfs of diff output are now
+# delimited by a small gap
+# * entries in __rf-files are now sorted
+#
+# 1.88 2001-09-04 Peter Toft Kim Schulz means that that
+# text in line 748 (previously 744)
+# was adequite. Updated.
+#
+# 1.87 2001-08-30 Laurent Besson Bagged two bugs!!
+# Stefan Kost * fixed empty output
+# * copyright footer looks the same
+# for all pages
+# * chrono-file back-links go to
+# "top" frame
+#
+# 1.86 2001-08-26 Stefan Kost Handling of verbosity level update
+#
+# 1.85 2001-08-24 Stefan Kost * handles "cvs connection refused"
+# * find_alldirs, find_subdirs do not
+# follow symlinks
+# * new option -V
+# * cleaned up code indentation
+# * more comments
+#
+# 1.84 2001-07-14 Peter Toft Added links in the cronological file
+# to the main page and removed a
+# debug-printout statement.
+#
+# 1.83 2001-06-28 Grzegorz Pawelczak Patch to handle branches (fix)
+#
+# 1.82 2001-06-22 Grzegorz Pawelczak Patch to handle branches
+#
+# 1.81 2001-06-18 David Carson Minor update - added support
+# for underscore in author-field
+#
+# 1.80 2001-05-31 Peter V. Pretsch Fixed the problem with missing
+# right frames
+#
+# 1.79 2000-12-27 Peter Toft Peter made error in the Changelog :-)
+#
+# 1.78 2000-12-27 Peter Toft Error in making diff-directories
+# corrected. Example included in help-
+# description.
+# Changed mkdir to perl-command.
+#
+# 1.77 2000-12-15 Peter Toft Hack to avoid generating the
+# same diff-files over and over again.
+# Renaming of the diff-files.
+# Dumping the diff-files in a
+# separate subdir.
+#
+# 1.76 2000-11-30 Jody Lewis Typo; The parent links in the
+# lower left frame were incorrect
+#
+# 1.75 2000-11-04 Kirby Vandivort URL of cvs2html changed
+#
+# 1.73 2000-11-02 Peter Toft Clean up - deleted an old status line
+#
+# 1.72 2000-10-28 Peter Toft If basename() or dirname() adds
+# a \n code, then cvs2html malfunctions
+# This should solve the problem.
+#
+# 1.71 2000-10-26 Peter Toft Minor clean-up
+#
+# 1.70 2000-10-26 Jon Berndt Documentation problem -L option
+# Peter Toft -L/-E option was not working
+# Redefined -L and dumped the -E option
+#
+# 1.69 2000-09-29 Robert Merkle Support for users with 0-9
+# in name
+#
# 1.68 2000-09-20 Wolfgang Bangerth Patch to avoid HTML syntax
# problems and link error.
#
-# 1.67 2000-08-21 Kirby Vandivort Update to cvs2html to fix html
+# 1.67 2000-08-21 Kirby Vandivort Update to cvs2html to fix html
# markup display in cvs comments
#
# 1.66 2000-08-11 Kirby Vandivort Added support for an
# parameter -P controlled location
# of cvs
#
-# 1.65 2000-06-24 Peter Toft Added support for filenames
+# 1.65 2000-06-24 Peter Toft Added support for filenames
# containing whitespaces -
# requested by John Stone
#
# 1.64 2000-06-11 Peter Toft Better documentation in the start
# of the program
#
-# 1.63 2000-06-11 Peter Toft Bug fix due to input from Andreas
-# Wieweg. Line breaks disappeared
-#
-# 1.62 2000-06-11 Peter Toft Same chronolog entry (-p) only if time
-# difference is small enough. See the
-# variable $commit_smalltimedifference
-#
-# 1.61 2000-06-10 Peter Toft Made option -p work even better
-# Have a look at the chronological
-# file when using -p -c
-#
-# 1.60 2000-06-05 Peter Toft Bug -> when using -o DIRNAME
-# acted very bad.
-# Added option -p which will make
-# the chronolog also contain the
-# cvs log entries
-#
-# 1.59 2000-01-12 Dag Brück and Two additional Y2K bugs in
-# Henrik Carlqvist the dates presented
-#
# ---- ---------- -------------------- -------------------------------
#
# This program is protected by the GPL, and all modifications of
# general interest can be emailed to Peter Toft
#
+# The GPL can be found at http://www.gnu.org/copyleft/gpl.html
+#
# Other people that have contributed directly or indirectly to cvs2html
# Henner Zeller
# Henning Niss
# Henrik Carlquist
# Tim Bradshaw
# David Miller
+# David Carson
# Finn Aarup Nielsen
# Michael Krause
# Jim Phillips
-# Jon S. Berndt
+# Jon S. Berndt
# Edward S. Marshall
# Curtis L. Olson
# Aubrey Jaffer
@@ -88,27 +156,29 @@
# Kirby Vandivort
# Dag Brück
# Wolfgang Bangerth
-
-
-
+# Robert Merkle
+# Jody Lewis
+# Peter V. Pretsch
+# Grzegorz Pawelczak
+# Stefan Kost
#
-# Copyright under GPL 1997,1998,1999,2000 by
+# Copyright under GPL 1997,1998,1999,2000,2001 by
# Peter Toft (pto@sslug.dk) + the persons above
#
-# Join the cvs2html mailing list
-# by sending an email to ,
-# the contents of this mails is of no matter.
+# Join the cvs2html mailing list
+# by sending an email to ,
+# the contents of this mails is of no matter.
# You will receive an email than you need to reply to.
#
# If you want to unsubscribe from the list - write a mail to
# , and reply to the mail you get.
# In case of problems contact
-#
+#
# The URL of cvs2html is:
-$URL = "http://www.sslug.dk/cvs2html";
+$URL = "http://cvs.sslug.dk/cvs2html";
-# $Id$
+$cvs2html_version='$Id$';
require 'getopts.pl';
require 'ctime.pl';
@@ -116,12 +186,21 @@ require 'ctime.pl';
use File::Basename;
use File::Find;
-$v = '$Revision$';
+if($cvs2html_version =~ /^\$Id\: (\w+?),v (\d+?\.\d+?) /i) {
+ $version=$2;
+}
+else {
+ $version="?.?";
+}
+
+# get options from cfgfile
-($dummy,$version) = $v =~ /^\$(\w+): (.*) \$$/;
+# now get the options. The ones with a colon means the an extra argument follows.
+# all options given will override the ones specified in cfgfile
+&Getopts('r:abc:C:d:efhkl:n:N:s:vo:D:E:L:O:w:i:pP:V:');
###############################################################
-# Default variables that you can change
+# graphic related default variables that you can change
###############################################################
# Default width of the left frame in pixels. Also changed by -w option
@@ -130,8 +209,6 @@ $leftframewidth = 150;
# Default splitratio of the left frame in percent. Also changed by -s option
$leftsplitratio = "70%";
-# Border of Frames
-$frameborder = "2";
# Default cell color
$cellcolor = "#c7c7c7";
@@ -142,20 +219,24 @@ $filenamecellcolor = "#7777FF";
$backcolor = "#AAAAAA";
# Default background for the difference cells
-$differencebackground = "#AABBAA";
-
-# Get the options. The ones with a colon means the an extra argument follows.
-&Getopts('r:abc:C:d:efhkl:n:N:s:vo:D:E:L:O:w:i:pP:');
+$differencebackground = "#BBBBBB";
# Colors and font to show the diff type of code changes when using -a
-$diffcolorHeading='#909090'; # color of 'Line'-heading of each diffed file
-$diffcolorEmpty ='#909090'; # color of 'empty' lines
-$diffcolorRemove ='#FF5555'; # Removed line(s) (left) (empty)
-$diffcolorChange ='#55FF55'; # Added line(s) (empty) (right)
-$diffcolorDarkChange ='#55AA55'; # lines, which are empty on the left/right
-$diffcolorAdd ='#5555FF'; # Changed line(s) ( both )
-$difffontface ="Arial,Helvetica";
-$difffontsize ="-1";
+$diffcolorHeading ='#999999'; # color of 'Line'-heading of each diffed file
+$diffcolorEmpty ='#999999'; # color of 'empty' lines
+$diffcolorNormal ='#BBBBBB'; # color of 'unchanged' ('equal') lines
+$diffcolorRemove ='#FF9999'; # Removed line(s) (left) (empty)
+$diffcolorChange ='#99FF99'; # Added line(s) (empty) (right)
+$diffcolorDarkChange ='#77AA77'; # lines, which are empty on the left/right
+$diffcolorAdd ='#AAAAFF'; # Changed line(s) ( both )
+# just uncomment if you don't want any font-changes
+#$difffontface ="Arial,Helvetica";
+$difffontface ="Courier,Courier New";
+$difffontsize ="-1";
+
+###############################################################
+# other default variables that you can change
+###############################################################
# Set $kkon ="-kk" if you permanently want to hide keyword substitutions
# when making diff-files.
@@ -172,10 +253,71 @@ $commit_smalltimedifference = 10;
# default CVS location (default assumes in path)
$cvsLocation="cvs";
+# warnings if omitting generating of diff-files
+$diffwarning = 0;
+
+# sub dir name for diff-files
+$diffdirname = "diff";
+
###############################################################
# Subfunctions
###############################################################
+#html helper
+sub html_footer {
+ my ($stradd)=@_;
+
+ if(!defined($stradd)){ $stradd=""; }
+ (undef,$min,$hour,$mday,$mon,$year,undef,undef,undef) = localtime(time);
+ $struser=getlogin;
+ $strdate=sprintf "%4d-%02d-%02d %2d:%02d",$year+1900, $mon+1, $mday,$hour,$min;
+
+ $ret="
\n";
+ $ret.="\n";
+ $ret.="File made using version $version of ";
+ $ret.="cvs2html by ";
+ $ret.="$struser at $strdate $revisionlimitertext $stradd";
+ $ret.="\n";
+ return($ret);
+}
+
+sub html_header {
+ my ($title)=@_;
+
+ $ret="<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n
+\n\n";
+ if(defined($title) && length($title)>0) {
+ $ret.="$title";
+ }
+ else {
+ $ret.="cvs2html";
+ }
+ $ret.="\n\n";
+ if ($opt_i) {
+ $ret.="\n";
+ } else {
+ $ret.="\n";
+ }
+ if(defined($title) && length($title)>0) {
+ $ret.="$title
\n
\n";
+ }
+ return($ret);
+}
+
+sub cvsrootinfo {
+ # the two tables are needed for proper layout
+ $ret="\n";
+ $ret.="\n";
+ $ret.="Protocol: | $protocol | \n";
+ $ret.=" User: | $cvsuser | \n";
+ $ret.="
\n\n";
+ $ret.=" Machine: | $machine | \n";
+ $ret.=" CVSROOT: | $cvsroot | \n";
+ $ret.="
\n";
+ $ret.="
\n";
+ return($ret);
+}
+
#function to help sort
sub sorter{
$chronotimesince0[$a] <=> $chronotimesince0[$b];
@@ -183,25 +325,17 @@ sub sorter{
#Function to close the main file
sub closemainfile {
- # Print date info in the last part of the HTML document
- print OUTFILE "
\n";
- print OUTFILE "\n";
- ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
- print OUTFILE "File made using version $version of ";
- print OUTFILE "cvs2html by ";
-
- printf OUTFILE "%s at %4d-%02d-%02d %2d:%02d $revisionlimitertext",getlogin, $year+1900, $mon+1, $mday,$hour,$min;
- if ($cutdate>"00000000")
- {
- printf OUTFILE " leaving out any log message prior to $cutyearformat2";
+ # Print date & copyright info in the last part of the HTML document
+ $stradd="";
+ if ($cutdate>"00000000") {
+ $stradd.=" leaving out any log message prior to $cutyearformat2";
}
- if (($opt_n>0) && ($opt_a))
- {
- printf OUTFILE " and only showing the $opt_n latest version differences";
+ if (($opt_n>0) && ($opt_a)) {
+ $stradd.=" and only showing the $opt_n latest version differences";
}
+ print OUTFILE html_footer($stradd);
# Lets wrap up OUTFILE
- print OUTFILE "\.
\n";
print OUTFILE "\n";
print OUTFILE "\n";
@@ -213,11 +347,13 @@ sub shorthelp {
print "*** CVS2HTML ***\nA Perl program to transform the 'cvs log' output to HTML.\n";
print "Usage of cvs2html\n\n";
- print "cvs2html [-a [-b][-k]] [-n NUMDIF] [-l FTPHOME] [-L FTPHOME -E EXTENSION]\n";
+ print "cvs2html [-a [-b][-k]] [-n NUMDIF] [-l/-L FTPHOME]\n";
print " [-e] [-f] [-d \"MMM DD [YYYY]\"] [-D DD] [-i IMAGE] [-h]\n";
print " [-v] [-w FRAMEWIDTH] [-s PERCENTAGE] [-N MAXCHRONO]\n";
print " [-rREV1:REV2] [-c/-C CFILENAME] -O/o HTMLNAME\n";
- print " [-P CVSPATH]\n";
+ print " [-P CVSPATH] [-V VERBOSITY]\n";
+
+ print "\n\nTry: cvs2html -help\n";
}
sub showhelp {
@@ -232,6 +368,8 @@ sub showhelp {
print " cvs2html -O foo -v\n";
print " which outputs a html file to the file foo.html including\n";
print " information about the CVSROOT setting.\n";
+ print "\n";
+
print " Using -o instead of -O, frames will be made for easy control.\n";
print "\n";
@@ -260,9 +398,9 @@ sub showhelp {
print " are ignored.\n";
print " If an option -l ftphome is given links to the files relative\n";
- print " to the URL ftphome is made. Add -F ftphtmlhome to do the same but\n";
- print " substitutes file extension with .html (-l and -L works together)\n";
- print " and -L requires that the -E option is used.\n";
+ print " to the URL ftphome is made. Use -L ftphtmlhome to do the same as";
+ print " -l, but substitutes file extension with .html\n";
+ print "\n";
print " If an option -d \"month day year\" is given (year optional) any\n";
print " log message prior to that date is omitted. The three first \n";
@@ -279,14 +417,22 @@ sub showhelp {
print " If -o and -w FRAMEWIDTH is used the left frame will have\n";
print " FRAMEWIDTH pixels. Add -f when using the -o option to \n";
print " generate individual log files for each file.\n";
- print " Use -s Number/Percentage to change the fraction of the left\n";
- print " bar in eigher pixels or percentage.\n\n";
+ print " Use -s PERCENTAGE to set width of the fraction of the left\n";
+ print " bar in percentage.\n";
+ print "\n";
- print " Use -i IMAGENAME to replace the background with IMAGENAME\n\n";
+ print " Use -i IMAGE to replace the background with file specified as IMAGE\n";
+ print "\n";
print " Use -P CVSPATH to specify an explicit location cvs. The\n";
print " default value is simply 'cvs', which means that cvs is in your\n";
- print " path.\n\n";
+ print " path.\n";
+ print "\n";
+
+ print " Use -V VERBOSITY to make cvs2html report what it is doing. A\n";
+ print " value of 0 means be quiet and bigger numbers means more output.\n";
+ print " This is especially useful, when something went wrong.\n";
+ print "\n";
print " The html file also contains anchors, if a file foo.html\n";
print " containing a file e.g., foofoo.m is generated then it is\n";
@@ -294,11 +440,12 @@ sub showhelp {
print "\n";
print " Example :\n";
- print " cvs2html -l ftp://eivind.imm.dtu.dk/pub/utils -D 5 -c chrono.html \\";
- print " -v -o ~/utils.html\n";
- print " makes ~/utils.html with log data for the 5 most recent days.\n";
- print " with links relative to ftp://eivind.imm.dtu.dk/pub/utils\n";
- print " and makes the chronological log file.\n\n";
+ print " cvs2html -l http://cvs.sslug.dk/linuxbog -f -p \\\\ \n";
+ print " -o cvs2html/index.html -v -a -b -n 6 -C crono.html\n";
+ print " makes cvs2html/ with individual log data for each file \n";
+ print " with links relative to \"http://cvs.sslug.dk/linuxbog\"\n";
+ print " and creates a chronological log file \"crono.html\".\n";
+ print "\n";
print " cvs2html with no arguments displays this help\n";
print " Peter Toft et al, Technical University of Denmark, 1997\n";
@@ -307,8 +454,7 @@ sub showhelp {
# This function will set the date after which the log info is shown.
# Any log info before the date is NOT shown.
-sub date_control
-{
+sub date_control {
%months= (
'Jan','01',
'Feb','02',
@@ -333,8 +479,7 @@ sub date_control
if ($opt_d) {
($cutmonthtxt,$cutdatetxt,$cutyeartxt)= $opt_d =~ /^(\w+) (\d+) (\d+)$/;
}
- if ($opt_D)
- {
+ if ($opt_D) {
$cd = localtime(time-3600*24*$opt_D);
$cd =~ /^(\w+) (\w+)[ ]*(\d+)[ ]*(\d+):(\d+):(\d+) (\d+)$/;
$cutyeartxt = $7;
@@ -342,47 +487,50 @@ sub date_control
$cutdatetxt = $3;
}
- if (length($cutyeartxt)==0)
- {
+ if (length($cutyeartxt)==0) {
($cutmonthtxt,$cutdatetxt)= $opt_d =~ /^(\w+) (\d+)$/;
$cutyeartxt=$currentyear;
}
$cutyearformat2="$cutmonthtxt $cutdatetxt $cutyeartxt";
-
- if (length($cutdatetxt)==1)
- {
+
+ if (length($cutdatetxt)==1) {
$cutdatetxt="0".$cutdatetxt;
}
$m=$months{$cutmonthtxt};
- if (length($m)==0)
- {
+ if (length($m)==0) {
print "The option -d \"month day [year]\" was used with a wrong month ($cutmonthtxt).\n";
print "First three letters is used\n";
exit(0);
}
$cutdate = $cutyeartxt.$m.$cutdatetxt;
}
- else
- {
+ else {
$cutdate = "00000000";
}
# Anything before year 0000 - I dont think so...........
}
# Function to read the next line from cvslogarray
-sub getnextline
-{
+sub getnextline {
$lineno++;
- $cvslogarray[$lineno];
+ if($lineno<=scalar(@cvslogarray)) {
+ # DEBUG
+ #print STDOUT " cvslogarray[$lineno]=$cvslogarray[$lineno]";
+ # DEBUG
+ return($cvslogarray[$lineno]);
+ }
+ else {
+ return(undef);
+ }
}
-sub flush_diff_rows ($$$$)
-{
+sub flush_diff_rows ($$$$) {
local $j;
my ($leftColRef,$rightColRef,$leftRow,$rightRow) = @_;
if ($state eq "PreChangeRemove") { # we just got remove-lines before
for ($j = 0 ; $j < $leftRow; $j++) {
print DIFFFILE "@$leftColRef[$j] | ";
+ print DIFFFILE " | ";
print DIFFFILE " |
\n";
}
}
@@ -392,6 +540,7 @@ sub flush_diff_rows ($$$$)
print DIFFFILE "";
if ($j < $leftRow) { print DIFFFILE "@$leftColRef[$j] | "; }
else { print DIFFFILE " | "; }
+ print DIFFFILE " | ";
if ($j < $rightRow) { print DIFFFILE "@$rightColRef[$j] | "; }
else { print DIFFFILE " | "; }
print DIFFFILE "
\n";
@@ -399,44 +548,51 @@ sub flush_diff_rows ($$$$)
}
}
# Function to generate diff-files
-sub generate_diff_file
-{
+sub generate_diff_file {
local ( $ii,$difftxt,@diffar );
- $diffname = "$outdirname".'/'."$filename$convdir\_diff\_$oldrevnumber\_$revnumber.html";
- @listhtmlnames = (@listhtmlnames,$diffname);
- open(DIFFFILE,">$diffname") or die "Error: Could not open ; $diffname";
- print DIFFFILE "\n\nCVS diff $filename $convdir\n\n";
- if ($opt_i) {
- print DIFFFILE "\n";
- } else {
- print DIFFFILE "\n";
+ $diffname = $outdirname.'/'.$diffdirname.'/'."diff$convdir\_$filename\_$oldrevnumber\_$revnumber.html";
+
+ stat($diffname);
+ if (-e _) {
+ if ($diffwarning == 1) {
+ print "WARNING; cvs2html does not generate $diffname\n";
+ }
}
- if ($opt_k) {
+ else {
+ @listhtmlnames = (@listhtmlnames,$diffname);
+ open(DIFFFILE,">$diffname") or die "Error: Could not open ; $diffname";
+ print DIFFFILE html_header("Difference for $currentdir/$filename from version $revnumber to $oldrevnumber");
+ if ($opt_k) {
$kkon = "-kk";
- }
-
- @diffar = `$cvsLocation diff $kkon $whitespace -u -r $revnumber -r $oldrevnumber $currentdir/$filename\n`;
- print DIFFFILE "Difference for $currentdir/$filename from version $revnumber to $oldrevnumber
\n";
+ }
+ @diffar = `$cvsLocation diff $kkon $whitespace -u -r $revnumber -r $oldrevnumber $currentdir/$filename\n`;
- print DIFFFILE "\n";
- print DIFFFILE "version $revnumber | version $oldrevnumber |
";
+ print DIFFFILE "\n";
+ print DIFFFILE "version $revnumber | | version $oldrevnumber |
";
- $fs="";
- $fe="";
+ $fs="0) {
+ $fs.=" face=\"$difffontface\"";
+ }
+ if(defined($difffontsize) && length($difffontsize)>0) {
+ $fs.=" size=\"$difffontsize\"";
+ }
+ $fs.=">";
+ $fe="";
- $leftRow = 0;
- $rightRow = 0;
+ $leftRow = 0;
+ $rightRow = 0;
-# the first 8 lines are garbage for us
- for ($ii=8;$ii<=$#diffar;$ii++) {
+ # the first 8 lines are garbage for us
+ for ($ii=8;$ii<=$#diffar;$ii++) {
chop($difftxt = $diffar[$ii]);
if ($difftxt =~ /^@@/) {
($oldline,$newline) = $difftxt =~ /@@ \-([0-9]+).*\+([0-9]+).*@@/;
print DIFFFILE "";
- print DIFFFILE "";
- print DIFFFILE " | ";
- print DIFFFILE "";
- print DIFFFILE " |
\n";
+ print DIFFFILE "";
+ print DIFFFILE " | ";
+ print DIFFFILE "";
+ print DIFFFILE " |
\n";
$state = "dump";
$leftRow = 0;
$rightRow = 0;
@@ -450,128 +606,125 @@ sub generate_diff_file
# 9.7.1. Numeric and Special Graphic Entity Set
# (Hen)
#######
- s/&/&/g;
- s/\"/"/g;
- s/</g;
- s/>/>/g;
-
- # replace and
- if ($opt_b) {
- # make every other space 'breakable'
- s/ / /g; #
- s/ / /g; # 3 *
- s/ / /g; # 2 *
- # leave single space as it is
- }
- else {
- s/ / /g;
- s/ / /g;
- }
-
- # Add fontface, size
- $_ = "$fs $_$fe";
-
- #########
- # little state machine to parse unified-diff output (Hen, zeller@think.de)
- # in order to get some nice 'ediff'-mode output
- # states:
- # "dump" - just dump the value
- # "PreChangeRemove" - we began with '-' .. so this could be the start of a 'change' area or just remove
- # "PreChange" - okey, we got several '-' lines and moved to '+' lines -> this is a change block
- ##########
-
- if ($diffcode eq '+') {
- if ($state eq "dump") { # 'change' never begins with '+': just dump out value
- print DIFFFILE " | $_ |
\n";
- }
- else { # we got minus before
- $state = "PreChange";
- $rightCol[$rightRow++] = $_;
- }
- }
- elsif ($diffcode eq '-') {
- $state = "PreChangeRemove";
- $leftCol[$leftRow++] = $_;
- }
+ s/&/&/g;
+ s/\"/"/g;
+ s/</g;
+ s/>/>/g;
+
+ # replace and
+ if ($opt_b) {
+ # make every other space 'breakable'
+ s/ / /g; #
+ s/ / /g; # 3 *
+ s/ / /g; # 2 *
+ # leave single space as it is
+ }
+ else {
+ s/ / /g;
+ s/ / /g;
+ }
+
+ # Add fontface, size
+ $_ = "$fs $_$fe";
+
+ #########
+ # little state machine to parse unified-diff output (Hen, zeller@think.de)
+ # in order to get some nice 'ediff'-mode output
+ # states:
+ # "dump" - just dump the value
+ # "PreChangeRemove" - we began with '-' .. so this could be the start of a 'change' area or just remove
+ # "PreChange" - okey, we got several '-' lines and moved to '+' lines -> this is a change block
+ ##########
+
+ if ($diffcode eq '+') {
+ if ($state eq "dump") { # 'change' never begins with '+': just dump out value
+ print DIFFFILE " | | $_ |
\n";
+ }
+ else { # we got minus before
+ $state = "PreChange";
+ $rightCol[$rightRow++] = $_;
+ }
+ }
+ elsif ($diffcode eq '-') {
+ $state = "PreChangeRemove";
+ $leftCol[$leftRow++] = $_;
+ }
else { # empty diffcode
- flush_diff_rows \@leftCol, \@rightCol, $leftRow, $rightRow;
- print DIFFFILE "$_ | $_ |
\n";
- $state = "dump";
- $leftRow = 0;
- $rightRow = 0;
- }
+ flush_diff_rows \@leftCol, \@rightCol, $leftRow, $rightRow;
+ print DIFFFILE "$_ | | $_ |
\n";
+ $state = "dump";
+ $leftRow = 0;
+ $rightRow = 0;
+ }
}
+ }
+ flush_diff_rows \@leftCol, \@rightCol, $leftRow, $rightRow;
+ print DIFFFILE "
";
+
+ # print legend
+ print DIFFFILE "
";
+ print DIFFFILE "Legend:
\n";
+ print DIFFFILE "$fs"."line(s) removed in v.$revnumber"."$fe | $fs"." "."$fe | ";
+ print DIFFFILE "$fs"."line(s) changed"."$fe | ";
+ print DIFFFILE "$fs"." "."$fe | $fs"."line(s) added in v.$oldrevnumber"."$fe | ";
+ print DIFFFILE " |
\n";
+
+ print DIFFFILE html_footer("");
+ print DIFFFILE "\n\n";
+ close(DIFFFILE);
}
- flush_diff_rows \@leftCol, \@rightCol, $leftRow, $rightRow;
- print DIFFFILE "
";
-
- # print legend
- print DIFFFILE "
";
- print DIFFFILE "Legend:
\n";
- print DIFFFILE "Removed in v.$revnumber | | ";
- print DIFFFILE "changed lines | ";
- print DIFFFILE " | Added in v.$oldrevnumber | ";
- print DIFFFILE " |
\n";
-
- print DIFFFILE "
Made by ",getlogin;
- print DIFFFILE " using version $version of ";
- print DIFFFILE "cvs2html\n";
-
- print DIFFFILE "\n\n";
- close(DIFFFILE);
}
sub find_alldirs {
my @dirs = ();
find(
sub {
- if (-d && ! /CVS$/) {
+ if (-d && ! -l && ! /CVS$/) {
if ($File::Find::dir eq "." && $_ eq ".") {
push @dirs, "./";
- }
+ }
else {
push @dirs, "$File::Find::dir/$_";
}
}
}, '.'
- );
+ );
@dirs = map { $_ . "\n" } @dirs;
return @dirs;
-}
+}
sub find_subdirs {
my $currentdir = shift;
-
+
my @dirs = ();
finddepth(
sub {
- if (-d && ! /CVS$/ && $File::Find::dir eq $currentdir) {
+ if (-d && ! -l && ! /CVS$/ && $File::Find::dir eq $currentdir) {
if ( ! ($File::Find::dir eq $currentdir && $_ eq ".") ) {
push @dirs, "$File::Find::dir/$_";
}
}
}, $currentdir
- );
+ );
@dirs = map { $_ . "\n" } @dirs;
return @dirs;
}
-
sub kill_log_header {
@llcvslog = ();
$headerstill = -1;
foreach $ii (0 .. ($#lcvslog-1)) {
if ($headerstill == 0) {
- @llcvslog = (@llcvslog,@lcvslog[$ii]);
+ @llcvslog = (@llcvslog,$lcvslog[$ii]);
}
else {
$headerstill = $headerstill - 1;
- if (@lcvslog[$ii] =~ '----------------------------') {
- $headerstill = 2;
+ if ($lcvslog[$ii] =~ '----------------------------') {
+ $headerstill = 2;
}
}
}
@@ -587,58 +740,49 @@ date_control;
# Set the width of the left frame.
# Default value has been set above.
-if ($opt_w)
-{
+if ($opt_w) {
$leftframewidth = $opt_w;
}
# Set the splitratio of the left frame.
# Default value has been set above.
-if ($opt_s)
-{
+if ($opt_s) {
$leftsplitratio = $opt_s;
}
# I want help!
-if ($opt_h)
-{
+if ($opt_h) {
shorthelp;
showhelp;
exit(0);
}
# The user must give a filename for the HTML-file(s)
-if ((!(($opt_O) || ($opt_o))) || (($opt_O) && ($opt_o)))
-{
+if ((!(($opt_O) || ($opt_o))) || (($opt_O) && ($opt_o))) {
shorthelp;
- print "\nMade by Peter Toft (pto\@sslug.dk).\ncvs2html is Protected by the GPL.\n";
+ print "\nMade by Peter Toft (pto\@sslug.dk).\ncvs2html is protected by the GPL.\n";
exit(0);
}
$dochrono="";
-if($opt_c)
-{
+if($opt_c) {
$dochrono=$opt_c;
}
-if($opt_C)
-{
+if($opt_C) {
$dochrono=$opt_C;
}
# Is -c followed by a "valid" filename ?
-if (length($dochrono)>5)
-{
+if (length($dochrono)>5) {
$chronooutname = $dochrono;
}
-else
-{
+else {
$chronooutname = "cvs2html_chrono_log.html";
}
# Want to write to a file with frames?
-if ($opt_o)
-{
+if ($opt_o) {
$frames = 1;
$outname = $opt_o;
}
@@ -647,93 +791,93 @@ if ($opt_o)
$revisionlimiter="";
$revisionlimitertext="";
$starttag="";
-if ($opt_r)
-{
+if ($opt_r) {
$revisionlimiter = "-r".$opt_r;
$revisionlimitertext=" and only showing data between revisions $opt_r";
- if ($opt_r =~ /^(\S*):(\S*)/)
- {
+ if ($opt_r =~ /^(\S*):(\S*)/) {
$starttag=$1;
+ $endtag=$2;
}
+ $revisionlimiter_end = "-r:".$endtag;
+ $revisionlimiter_startonly = "-r".$starttag;
}
# Want to write to a file without frames?
-if ($opt_O)
-{
+if ($opt_O) {
$frames = 0;
$outname = $opt_O;
}
$linkrel = "";
# Want to link to external file
-if ($opt_l)
-{
- $linkrel=$opt_l;
-}
-
-# Want to link to external file
-if (($opt_L) && ($opt_E))
-{
- $htmllinkrel=$opt_L;
+if ($opt_l) {
+ $linkrel = $opt_l;
}
# Explicit path to cvs
-if ($opt_P)
-{
- $cvsLocation=$opt_P;
+if ($opt_P) {
+ $cvsLocation = $opt_P;
}
# Get the environment variable CVSROOT for this CVS repository
-open(INFILE,"<./CVS/Root") or die "Error: The file ./CVS/Root is missing.";
+open(INFILE,"<./CVS/Root") or die "Error: The file ./CVS/Root is missing - this directory does not seem to be under CVS-control.";
($fullcvsroot) = =~/^(.*)$/;
close INFILE;
# Split CVSROOT in machine and dir if possible.
@spl = split(':',$fullcvsroot);
if ($#spl == 3) {
-# @spl[0] is empty because client/server root starts with ':' -> :pserver
+# @spl[0] is empty because client/server root starts with ':' -> ":pserver" or ":ext"
$protocol =$spl[1]; # client/server
- $machine = $spl[2];
+ ($cvsuser,$machine) = split('@',$spl[2]);
$cvsroot = $spl[3];
}
elsif ($#spl == 1) {
$protocol = "rsh/ssh";
- $machine = $spl[0];
+ ($cvsuser,$machine) = split('@',$spl[0]);
$cvsroot = $spl[1];
}
else {
$protocol = "local";
+ $cvsuser = "";
$machine = "localhost";
$cvsroot = $spl[0];
}
# Get the name of the repository
-open(INFILE,"<./CVS/Repository") or die "Error: The file ./CVS/Repository is missing."; ;
+open(INFILE,"<./CVS/Repository") or die "Error: The file ./CVS/Repository is missing.";
#($rootdir) = =~/^\Q$fullcvsroot\E(.*)$/;
($rootdir) = ;
$rootdir = basename($rootdir);
-close INFILE;
+($rootdir) = $rootdir =~ /^(.*)$/;
+close INFILE;
# Strip a .html from the outname if any (pasted on later)
-($outnamem) = $outname =~ /^(.*).html$/;
-if (length($outnamem)>0)
-{
+($outnamem) = $outname =~ /^(.*)\.html$/;
+if (length($outnamem)>0) {
$outname = $outnamem;
}
-
# If an outputname is a directory a file named after the repository
# is generated (and others if using frames).
-if (-d $outname)
-{
+if (-d $outname) {
$outname = $outname."/".$rootdir;
}
# Split the outname from a possible directory full path
-$outfilename = basename ($outname);
-$outdirname = dirname ($outname);
+$outfilename = basename($outname);
+$outdirname = dirname($outname);
+
+($outfilename) = $outfilename =~ /^(.*)$/;
+($outdirname) = $outdirname =~ /^(.*)$/;
+$fulldiffdirname = $outdirname."/".$diffdirname;
+
+mkdir($outdirname,0775);
+mkdir($fulldiffdirname,0775);
+
+if(defined($opt_V) && $opt_V>0) { print STDOUT "Processing \#1 $currentdir\n"; }
# Get all dirs to search
@entirealldirs = find_alldirs();
@@ -742,44 +886,31 @@ $outdirname = dirname ($outname);
@alldirs = ();
foreach $dir (@entirealldirs) {
chop($dir);
- # print "$dir\n";
if ( -d "$dir/CVS" ) {
- print "$dir\n";
+ if(defined($opt_V) && $opt_V>1) { print STDOUT " $dir\n"; }
push(@alldirs, "$dir\n");
}
}
-if ($frames == 1)
-{
+if ($frames == 1) {
# Write the start of the left lower frame if more than one dir
- if (($#alldirs > 0) || ($dochrono))
- {
+ if (($#alldirs > 0) || ($dochrono)) {
$llname = $outdirname.'/'.$outfilename."__lfl.html";
open(OUTFILE3,">$llname") or die "Error: The file $llname could not be opened.";
@listhtmlnames = (@listhtmlnames,$llname);
- print OUTFILE3 "\n";
- print OUTFILE3 "CVS\n";
- if ($opt_i) {
- print OUTFILE3 "\n";
- } else {
- print OUTFILE3 "\n";
- }
+ print OUTFILE3 html_header("");
- if ($dochrono)
- {
- print OUTFILE3 "";
- print OUTFILE3 "\n";
+ if ($dochrono) {
+ print OUTFILE3 "\n";
$coutref = $outdirname."/".$chronooutname;
print OUTFILE3 'Chronological Log'." |
\n";
- print OUTFILE3 "
\n";
+ print OUTFILE3 "
\n";
}
print OUTFILE3 "Dirs
\n";
- print OUTFILE3 "";
- print OUTFILE3 "\n";
+ print OUTFILE3 "";
- for ($ii=0;$ii<=$#alldirs;$ii++)
- {
+ for ($ii=0;$ii<=$#alldirs;$ii++) {
$alldirs[$ii] =~ /^\.(.*)$/;
$dir = $1;
$showdir = "[$rootdir]$dir";
@@ -787,19 +918,15 @@ if ($frames == 1)
$refname =~ tr/\//_/;
- if (length($refname) == 1)
- {
+ if (length($refname) == 1) {
$refname = $outfilename;
}
- else
- {
+ else {
$refname = $outfilename.$refname;
}
print OUTFILE3 ''.$showdir." |
\n";
}
- print OUTFILE3 "
\n";
-
- print OUTFILE3 "\n";
+ print OUTFILE3 "
\n";
print OUTFILE3 "\n";
print OUTFILE3 "\n";
@@ -807,8 +934,7 @@ if ($frames == 1)
}
}
-if ($dochrono)
-{
+if ($dochrono) {
$chronocounter = -1;
@chronoindex=();
@chronoauthor=();
@@ -822,8 +948,7 @@ if ($dochrono)
#############################################################
# Lets go for each of the directories
#############################################################
-for ($dd=0;$dd<=$#alldirs;$dd++)
-{
+for ($dd=0;$dd<=$#alldirs;$dd++) {
# Initialization
@otherdnames = ();
$lineno = -1;
@@ -835,209 +960,171 @@ for ($dd=0;$dd<=$#alldirs;$dd++)
($currentdir) = $alldirs[$dd] =~ /^\.\/(.*)$/;
$convdir = $currentdir;
$convdir =~ tr/\//_/;
- if (length($currentdir)==0)
- {
+ if (length($currentdir)==0) {
$currentdirformat2 ="";
$currentdir='.';
$convdir = "";
}
- else
- {
+ else {
$currentdirformat2 = $currentdir."/";
$convdir = '_'.$convdir;
}
- print "Processing $currentdir\n";
+ if(defined($opt_V) && $opt_V>0) { print STDOUT "Processing \#2 $currentdir\n"; }
@entiresubdirs = find_subdirs($currentdir);
-
@subdirs = ();
foreach $dir (@entiresubdirs) {
chop($dir);
- # print "$dir\n";
if ( -d "$dir/CVS" ) {
- push(@subdirs, "$dir\n");
- }
+ if(defined($opt_V) && $opt_V>1) { print STDOUT " $dir\n"; }
+ push(@subdirs, "$dir\n");
+ }
}
- if ($frames == 1)
- {
- $llname = $outdirname.'/'.$outfilename.$convdir."__lfl.html";
- open(OUTFILE3,">$llname") or die "Error: The file $llname could not be opened.";
- @listhtmlnames = (@listhtmlnames,$llname);
- print OUTFILE3 "\n";
- print OUTFILE3 "CVS\n";
- if ($opt_i) {
- print OUTFILE3 "\n";
- } else {
- print OUTFILE3 "\n";
- }
-
- if ($dochrono)
- {
- print OUTFILE3 "";
- print OUTFILE3 "\n";
- $coutref = $outdirname."/".$chronooutname;
- print OUTFILE3 '
Chronological Log'." |
\n";
- print OUTFILE3 "
\n";
- }
-
- if ($#subdirs>=0 || $currentdir ne '.') {
- print OUTFILE3 "Sub Dirs
\n";
- print OUTFILE3 "";
- print OUTFILE3 "\n";
-
- if($currentdir eq '.')
- {
- # No parent directory to top
- }
- else
- {
- $showdir = ".. Parent Dir";
- $up = dirname ($currentdir);
- if ($up eq ".")
- {
- $refname = "/";
- }
- else
- {
- $refname = "/$up";
- }
-
- $refname =~ tr/\//_/;
-
- if (length($refname) == 1)
- {
- $refname = $outfilename;
- }
- else
- {
- $refname = $outfilename.$refname;
- }
- print OUTFILE3 '
'.$showdir." |
\n";
- }
- for ($ii=0;$ii<=$#subdirs;$ii++)
- {
- $subdirs[$ii] =~ /^\.(.*)$/;
- $dir = $1;
- $up = dirname ($subdirs[$ii]) . "\n";
- $up = basename ($up) . "\n";
- $down = basename ($subdirs[$ii]) . "\n";
- $dir = "/$down";
- if ($up eq ".\n")
- {
- $showdir = "[$rootdir]$dir";
- }
- else
- {
- $showdir = "[$up]$dir";
- }
-
- if($currentdir eq '.')
- {
- $refname = $dir;
- }
- else
- {
- $refname = "/$currentdir$dir";
- }
-
- $refname =~ tr/\//_/;
-
- if (length($refname) == 1)
- {
- $refname = $outfilename;
- }
- else
- {
- $refname = $outfilename.$refname;
- }
- chop($refname);
- print OUTFILE3 ''.$showdir." |
\n";
- }
- print OUTFILE3 "
\n";
-
- }
- print OUTFILE3 "\n";
- print OUTFILE3 "\n";
+ if ($frames == 1) {
+ $llname = $outdirname.'/'.$outfilename.$convdir."__lfl.html";
+ open(OUTFILE3,">$llname") or die "Error: The file $llname could not be opened.";
+ @listhtmlnames = (@listhtmlnames,$llname);
+ print OUTFILE3 html_header("");
+
+ if ($dochrono) {
+ print OUTFILE3 "";
+ $coutref = $outdirname."/".$chronooutname;
+ print OUTFILE3 'Chronological Log'." |
\n";
+ print OUTFILE3 "
\n";
+ }
+
+ if ($#subdirs>=0 || $currentdir ne '.') {
+ print OUTFILE3 "Sub Dirs
\n";
+ print OUTFILE3 "";
+ if($currentdir eq '.') {
+ # No parent directory to top
+ }
+ else {
+ $showdir = ".. Parent Dir";
+ $up = dirname ($currentdir);
+ ($up) = $up =~ /^(.*)$/;
+
+ if ($up eq ".") {
+ $refname = "/";
+ }
+ else {
+ $refname = "/$up";
+ }
+ $refname =~ tr/\//_/;
+ if (length($refname) == 1) {
+ $refname = $outfilename;
+ }
+ else {
+ $refname = $outfilename.$refname;
+ }
+ print OUTFILE3 ''.$showdir." |
\n";
+ }
+ for ($ii=0;$ii<=$#subdirs;$ii++) {
+ $subdirs[$ii] =~ /^\.(.*)$/;
+ $dir = $1;
+ $up = dirname ($subdirs[$ii]);
+ ($up) = $up =~ /^(.*)$/;
+ $up = basename ($up);
+ ($up) = $up =~ /^(.*)$/;
+ $down = basename ($subdirs[$ii]);
+ ($down) = $down =~ /^(.*)$/;
+ $dir = "/$down";
+ if ($up eq ".\n") {
+ $showdir = "[$rootdir]$dir";
+ }
+ else {
+ $showdir = "[$up]$dir";
+ }
+
+ if($currentdir eq '.') {
+ $refname = $dir;
+ }
+ else {
+ $refname = "/$currentdir$dir";
+ }
+ $refname =~ tr/\//_/;
+ if (length($refname) == 1) {
+ $refname = $outfilename;
+ }
+ else {
+ $refname = $outfilename.$refname;
+ }
+
+ print OUTFILE3 ''.$showdir." |
\n";
+ }
+ print OUTFILE3 "
\n";
+ }
+ print OUTFILE3 "\n";
+ print OUTFILE3 "\n";
- close(OUTFILE3);
+ close(OUTFILE3);
}
# Should the output have frames then make left lower frame.
- if ($frames == 1)
- {
+ if ($frames == 1) {
# Write the start of the left upper frame
$luname = $outdirname.'/'.$outfilename.$convdir."__lfu.html";
open(OUTFILE2,">$luname") or die "Error: The file $luname could not be opened.";
@listhtmlnames = (@listhtmlnames,$luname);
- print OUTFILE2 "\n";
- print OUTFILE2 "CVS\n";
- if ($opt_i) {
- print OUTFILE2 "\n";
- } else {
- print OUTFILE2 "\n";
- }
- print OUTFILE2 "Log history
\n";
- print OUTFILE2 "";
- print OUTFILE2 "\n";
-
+ print OUTFILE2 html_header("");
+ print OUTFILE2 "Log History
\n";
+ print OUTFILE2 "";
+ %outfile2lines=();
}
# Should the output have frames ?
- if ($frames == 1)
- {
- # Write the start of the main html file
+ if ($frames == 1) {
$mainname = $outdirname.'/'.$outfilename.$convdir.".html";
+
+ # Write the start of the main html file
open(OUTFILE4,">$mainname") or die "Error: The file $mainname could not be opened.";
@listhtmlnames = (@listhtmlnames,$mainname);
- print OUTFILE4 "\n";
+ print OUTFILE4 "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">\n\n";
print OUTFILE4 "CVS2HTML\n";
- print OUTFILE4 "
\n";
+ if ($opt_o) {
+ # output all filenames sorted
+ foreach $key (sort { lc($a) cmp lc($b) } keys %outfile2lines) {
+ print OUTFILE2 $outfile2lines{$key}
+ }
+ print OUTFILE2 "
\n";
}
- if (($opt_o) && ($nooffiles == $#otherdnames+1))
- {
+ if (($opt_o) && ($nooffiles == $#otherdnames+1)) {
print OUTFILE2 "No file revisions.
\n";
}
- if (($#otherdnames>=0) && ($opt_o))
- {
+ if (($#otherdnames>=0) && ($opt_o)) {
print OUTFILE2 "
Unchanged
\n";
- if ($#otherdnames>=0)
- {
- print OUTFILE2 "";
- print OUTFILE2 "\n";
- for ($ii=0;$ii<=$#otherdnames;$ii++)
- {
- print OUTFILE2 "
$otherdnames[$ii] |
\n";
+ if ($#otherdnames>=0) {
+ print OUTFILE2 "\n";
+ for ($ii=0;$ii<=$#otherdnames;$ii++) {
+ print OUTFILE2 "$otherdnames[$ii] |
\n";
}
- print OUTFILE2 "
\n";
-
- }
- else
- {
+ print OUTFILE2 "
\n";
+ }
+ else {
print OUTFILE2 "All files have revisions.
\n";
}
-
}
-
# Lets wrap up OUTFILE2
- if ($opt_o)
- {
- print OUTFILE2 "\n";
+ if ($opt_o) {
print OUTFILE2 "\n";
print OUTFILE2 "\n";
close(OUTFILE2);
}
# Found a bad one....... This should NOT happen
- if ($foundbadone == 1)
- {
- print "\ncvs2html found some files that was no part of CVS\n\n";
+ if ($foundbadone == 1) {
+ print STDERR "\ncvs2html found some files that was no part of CVS\n\n";
}
- if ($frames == 1)
- {
- print OUTFILE4 "";
- print OUTFILE4 "\n";
+ if ($frames == 1) {
+ print OUTFILE4 "\n";
- for ($ddd=0;$ddd<=$#alldirs;$ddd++)
- {
+ for ($ddd=0;$ddd<=$#alldirs;$ddd++) {
($currentdir) = $alldirs[$ddd] =~ /^\.\/(.*)$/;
$convdir = $currentdir;
$convdir =~ tr/\//_/;
- if (length($currentdir)==0)
- {
+ if (length($currentdir)==0) {
$currentdir='.';
$convdir = "";
}
- else
- {
+ else {
$convdir = '_'.$convdir;
}
chop($ldir = $alldirs[$ddd]);
- if (length($ldir) == 2)
- {
+ if (length($ldir) == 2) {
$ldir ="";
}
- print OUTFILE4 "[$rootdir]$ldir |
\n";
+ print OUTFILE4 "[$rootdir]$ldir |
\n";
}
- print OUTFILE4 "
\n";
+ print OUTFILE4 "
\n";
}
- print OUTFILE4 "
Made by ",getlogin;
- print OUTFILE4 " using version $version of ";
- print OUTFILE4 "cvs2html $revisionlimitertext\n";
-
+ print OUTFILE4 html_footer("");
print OUTFILE4 "\n";
+ print OUTFILE4 "\n";
print OUTFILE4 "\n";
close(OUTFILE4);
-
}
-if ($dochrono)
-{
+if ($dochrono) {
$coutref = $outdirname."/".$chronooutname;
open(CHRONOFILE,">$coutref");
- print CHRONOFILE "\n\nCVS time sorted logs\n\n";
- if ($opt_i) {
- print CHRONOFILE "\n";
- } else {
- print CHRONOFILE "\n";
+ if(defined($opt_V) && $opt_V>0) { print STDOUT "Generate chrono file\n"; }
+
+ print CHRONOFILE html_header("CVS time sorted logs");
+ if ($frames == 0) {
+ print CHRONOFILE 'Back to main page';
}
- print CHRONOFILE "
CVS time sorted logs
\n";
- print "Sorting the logfiles\r";
+ #print "Sorting the logfiles\r";
@cindex = sort sorter @chronoindex;
- print "Done sorting the logfiles\n";
+ #print "Done sorting the logfiles\n";
- if ($frames == 1)
- {
- print CHRONOFILE "";
- printf(CHRONOFILE "%s | %s | %s | %s | \n","Time ","Revision","Author","Filename");
+ if ($frames == 1) {
+ print CHRONOFILE "";
+ printf(CHRONOFILE "%s | %s | %s | %s |
\n","Time ","Revision","Author","Filename");
}
- else
- {
- printf(CHRONOFILE "
\n%20s %8s %10s %s
\n","Time ","Revision","Author","Filename");
+ else {
+ printf(CHRONOFILE "
|
\n%20s %8s %10s %s
\n","Time ","Revision","Author","Filename");
}
$cclim = $chronocounter;
$cindexlow=0;
- if ($opt_N>0)
- {
- if ($opt_N-1<$chronocounter)
- {
+ if ($opt_N>0) {
+ if ($opt_N-1<$chronocounter) {
$cclim = $opt_N-1;
$cindexlow = $chronocounter+1-$opt_N;
$cctxt = " and only the last $opt_N changes are shown.";
}
}
- if ($cindexlow<0)
- {
+ if ($cindexlow<0) {
$cindexlow=0;
}
if ($opt_p) {
- for ($ii=$cindexlow;$ii<=$chronocounter;$ii++)
- {
- if ($opt_c)
- {
- $cind = $ii;
+ for ($ii=$cindexlow;$ii<=$chronocounter;$ii++) {
+ if ($opt_c) {
+ $cind = $ii;
}
- else
- {
- $cind = $chronocounter-$ii+$cindexlow;
+ else {
+ $cind = $chronocounter-$ii+$cindexlow;
}
$index = $cindex[$cind];
+ if(defined($opt_V) && $opt_V>1) { print STDOUT " $chrononame[$index]\n"; }
+
@lcvslog = `$cvsLocation log -N -r$chronoversion[$index] "$chrononame[$index]"`;
@llcvslog = ();
$headerstill = -1;
foreach $jj (0 .. ($#lcvslog-1)) {
- if ($headerstill == 0) {
- $_=@lcvslog[$jj];
- s/&/&/g;
- s/\"/"/g;
- s/</g;
- s/>/>/g;
- @llcvslog = (@llcvslog,$_);
- }
- else {
- $headerstill = $headerstill - 1;
- if (@lcvslog[$jj] =~ '----------------------------') {
- $headerstill = 2;
- }
- }
- }
+ if ($headerstill == 0) {
+ $_=$lcvslog[$jj];
+ s/&/&/g;
+ s/\"/"/g;
+ s/</g;
+ s/>/>/g;
+ @llcvslog = (@llcvslog,$_);
+ }
+ else {
+ $headerstill = $headerstill - 1;
+ if ($lcvslog[$jj] =~ '----------------------------') {
+ $headerstill = 2;
+ }
+ }
+ }
$lcvslogar[$index] = join('
',@llcvslog);
if (length($lcvslogar[$index])<2) {
- $lcvslogar[$index] = "(Empty log)";
+ $lcvslogar[$index] = "(Empty log)";
}
}
}
- for ($ii=$cindexlow;$ii<=$chronocounter;$ii++)
- {
- if ($opt_c)
- {
+ for ($ii=$cindexlow;$ii<=$chronocounter;$ii++) {
+ if ($opt_c) {
$cind = $ii;
$cind2 = $ii+1;
}
- else
- {
+ else {
$cind = $chronocounter-$ii+$cindexlow;
$cind2 = $cind-1;
}
$index = $cindex[$cind];
$index2 = $cindex[$cind2];
$ccc = ''.$chrononame[$index]."";
- if ($frames==0)
- {
+ if ($frames==0) {
printf(CHRONOFILE "%20s %8s %10s %s
\n",$chronoshowtime[$index],$chronoversion[$index],$chronoauthor[$index],$ccc);
}
- else
- {
- printf(CHRONOFILE "|
%s | %s | %s | %s |
\n",$chronoshowtime[$index],$chronoversion[$index],$chronoauthor[$index],$ccc);
+ else {
+ printf(CHRONOFILE "%s | %s | %s | %s |
\n",$chronoshowtime[$index],$chronoversion[$index],$chronoauthor[$index],$ccc);
if ($opt_p) {
-# print $chronotimesince0[$index]." ".$chronoshowtime[$index]." ".$chronoshowtime[$index2]." ".abs($chronotimesince0[$index]-$chronotimesince0[$index2])."\n";
if ($ii == $chronocounter){
- printf(CHRONOFILE "\n");
+ printf(CHRONOFILE " |
\n");
print CHRONOFILE $lcvslogar[$index];
printf(CHRONOFILE " |
\n");
-
- }
- elsif (($lcvslogar[$index] ne $lcvslogar[$index2]) || (abs($chronotimesince0[$index]-$chronotimesince0[$index2]))>$commit_smalltimedifference) {
- printf(CHRONOFILE "\n");
+ }
+ elsif (($lcvslogar[$index] ne $lcvslogar[$index2]) || (abs($chronotimesince0[$index]-$chronotimesince0[$index2]))>$commit_smalltimedifference) {
+ printf(CHRONOFILE " |
\n");
print CHRONOFILE $lcvslogar[$index];
printf(CHRONOFILE " |
\n");
- }
-
+ }
}
}
}
- if ($frames == 1)
- {
+ if ($frames == 1) {
print CHRONOFILE "
\n";
}
- else
- {
+ else {
print CHRONOFILE "
\n";
}
- #Wrap up the file
- print CHRONOFILE "\n\n\n";
+ if ($frames == 0) {
+ print CHRONOFILE 'Back to main page
';
+ }
- ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
- print CHRONOFILE "
File made using version $version of ";
- print CHRONOFILE "cvs2html by ";
- printf CHRONOFILE "%s at %4d-%02d-%02d %2d:%02d",getlogin, 1900+$year, $mon+1, $mday,$hour,$min;
- if ($cutdate>"00000000")
- {
- printf CHRONOFILE " leaving out any log message prior to $cutyearformat2 $revisionlimitertext";
+ $stradd="";
+ if ($cutdate>"00000000") {
+ $stradd.=" leaving out any log message prior to $cutyearformat2 $revisionlimitertext";
}
- print CHRONOFILE " $cctxt
\n";
+ print CHRONOFILE html_footer($stradd.$cctxt);
+ #Wrap up the file
+ print CHRONOFILE "\n\n\n";
close(CHRONOFILE);
# We must report that a new file has been made
@listhtmlnames = (@listhtmlnames,$coutref);
}
-# Print status
-print "\ncvs2html has generated the following files :\n\n";
-@ll=sort(@listhtmlnames);
-for ($ff=0;$ff<=$#listhtmlnames;$ff++)
-{
- print " $ll[$ff]\n";
+# Print status about which files have been generated
+# all diffs are under *_diff/ directory
+# files ending on "__rf" are those displayed in the right frame (the ones showing the revision history)
+# files ending on "__lfu" are those displayed in the upper part of the left frame
+# files ending on "__lfl" are those displayed in the lower part of the left frame
+#
+if(defined($opt_V) && $opt_V>0) {
+ print STDOUT "cvs2html has generated the following files :\n";
+ @ll=sort(@listhtmlnames);
+ for ($ff=0;$ff<=$#listhtmlnames;$ff++) {
+ print " $ll[$ff]\n";
+ }
+ print "\n";
}
-print "\n";
-