diff options
Diffstat (limited to 'scripts/mkchlog')
-rwxr-xr-x | scripts/mkchlog | 68 |
1 files changed, 46 insertions, 22 deletions
diff --git a/scripts/mkchlog b/scripts/mkchlog index f6d9a45..fa54b5d 100755 --- a/scripts/mkchlog +++ b/scripts/mkchlog @@ -5,23 +5,35 @@ # This code is in the public domain and may be used # for any purpose. +use Getopt::Long; +Getopt::Long::Configure("bundling", "no_ignore_case", "pass_through"); + +use strict; + # Configuration options. -$emailsuffix = '@sourceforge.net'; -$symbolic_name_regexp = '^(guten|gimp-|)print-[0-9]+_'; +my $emailsuffix; +my $symbolic_name_regexp; +my (@ignoreprefix); + +GetOptions("e:s" => \$emailsuffix, + "X=s" => \@ignoreprefix, + "s:s" => \$symbolic_name_regexp); -%logmsgs = (); # Index by date, time, and author -%fileversions = (); -$skipme = 0; -%basenames = (); +my %logmsgs = (); # Index by date, time, and author +my %fileversions = (); +my $skipme = 0; +my %basenames = (); +my %plus = (); +my %minus = (); -@cvsdirs=`find . -type d -name CVS -print`; -map { chomp; s,^\./,, } @cvsdirs; -foreach $d (@cvsdirs) { +my @cvsdirs=`find . -type d -name CVS -print`; +@cvsdirs = map { chomp; s,^\./,, } @cvsdirs; +foreach my $d (@cvsdirs) { if (open ENTRIES, "$d/Entries") { - local ($rootdir) = $d; + my ($rootdir) = $d; $rootdir =~ s/CVS$//; while (<ENTRIES>) { - local ($type, $file, $version, @junk) = split /\//; + my ($type, $file, $version, @junk) = split /\//; if ($type eq "") { $basenames{"$file"} = "1"; $file = "$rootdir$file"; @@ -126,6 +138,7 @@ my ($in_header) = 0; my (%symbols); my $revision; my $ignore; +my ($skipfile); my $currentfile; my $currentbasefile; my %symbols_printed = (); @@ -135,6 +148,12 @@ while (<>) { $in_header = 1; chomp; ($ignore, $ignore, $currentfile) = split; + if (grep { $currentfile =~ /^$_/ } @ignoreprefix) { + $skipfile = 1; + } else { + $skipfile = 0; + } + $symbols{$currentfile} = {}; next; } elsif ($in_header && $_ =~ /^symbolic names:/) { while (<>) { @@ -196,12 +215,15 @@ while (<>) { $firstline = 0; } } - $junkbody = $body; + my $junkbody = $body; $junkbody =~ s/\s//g; $junkbody .= "x"; - my $symbols = join " ", @{$symbols{$currentfile}{$revision}}; + my $symbols; + if (defined $symbols{$currentfile}{$revision}) { + $symbols = join " ", @{$symbols{$currentfile}{$revision}}; + } my $datetimeauthor = "$date $time $author $junkbody $currentfile $revision $symbols"; - if ($skipme == 0) { + if ($skipfile == 0 && $skipme == 0) { $logmsgs{$datetimeauthor} = $body; if ($plus eq "") { $plus{$datetimeauthor} = "added"; @@ -215,17 +237,19 @@ while (<>) { } # Other junk we ignore } -$prevmsg=""; -$header=""; -@fileinfo = (); +my $prevmsg=""; +my $header=""; +my @fileinfo = (); -@chlog = reverse sort keys %logmsgs; -%filenames_printed = (); +my @chlog = reverse sort keys %logmsgs; +my %filenames_printed = (); +my ($date, $time, $author, $junk, $file, $revision, @symbols); +my $filestuff; -foreach $_ (@chlog) { - my ($date, $time, $author, $junk, $file, $revision, @symbols) = split; +foreach (@chlog) { + ($date, $time, $author, $junk, $file, $revision, @symbols) = split; $date =~ s,/,-,g; - $msg = $logmsgs{$_}; + my $msg = $logmsgs{$_}; my $delta; if (! $minus{$_}) { $delta = "$plus{$_}"; |