1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-03 08:30:09 +00:00

Changes to support ChangeLog.10+.

(main): Tidy up usage string.  Fix "Use of uninitialized value" warning.
Set version to 0.2.  Parse the directory listing to get any ChangeLog.n
file, not just 1..9.
(header_match_p, entry_match_p, print_log, parse_changelog): Remove Perl
prototypes (their purpose is to help the parser, which isn't needed here,
not declare arguments).
(parse_changelog): Make --reverse faster on big batches by not modifying
the entries list.
This commit is contained in:
Juanma Barranquero 2004-03-09 22:47:27 +00:00
parent 2c8155f784
commit bdfd0369ce
2 changed files with 50 additions and 26 deletions

View File

@ -1,3 +1,15 @@
2004-03-09 Juanma Barranquero <lektu@terra.es>
* grep-changelog: Changes to support ChangeLog.10+.
(main): Tidy up usage string. Fix "Use of uninitialized value"
warning. Set version to 0.2. Parse the directory listing to get
any ChangeLog.n file, not just 1..9.
(header_match_p, entry_match_p, print_log, parse_changelog):
Remove Perl prototypes (their purpose is to help the parser, which
isn't needed here, not declare arguments).
(parse_changelog): Make --reverse faster on big batches by not
modifying the entries list.
2004-03-01 Juanma Barranquero <lektu@terra.es>
* makefile.w32-in (obj): Add fringe.c.

View File

@ -1,6 +1,6 @@
#! /usr/bin/perl
# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
# Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@ -56,34 +56,36 @@ $result = 0 if $to_date && $to_date !~ /^\d\d\d\d-\d\d-\d\d$/;
if ($result == 0 || $help) {
print <<USAGE;
Usage: $0 [options] [CHANGELOG...]
Print entries in ChangeLogs matching various criteria. Valid options
are
--author=AUTHOR match entries whose author line matches
Usage: $0 [options] [CHANGELOG...]
Print entries in ChangeLogs matching various criteria.
Valid options are:
--author=AUTHOR Match entries whose author line matches
regular expression AUTHOR
--text=TEXT match entries whose text matches regular
expression TEXT.
--exclude=TEXT exclude entries matching TEXT.
--from-date=YYYY-MM-DD match entries not older than given date
--to-date=YYYY-MM-DD match entries not younger than given date
--rcs-log format output suitable for RCS log entries.
--with-date print short date line in RCS log
--reverse show entries in reverse (chronological) order
--version print version info
--help print this help
--text=TEXT Match entries whose text matches regular
expression TEXT
--exclude=TEXT Exclude entries matching TEXT
--from-date=YYYY-MM-DD Match entries not older than given date
--to-date=YYYY-MM-DD Match entries not younger than given date
--rcs-log Format output suitable for RCS log entries
--with-date Print short date line in RCS log
--reverse Show entries in reverse (chronological) order
--version Print version info
--help Print this help
If no CHANGELOG is specified scan the files "ChangeLog" and
"ChangeLog.[9-1]" in the current directory. Old-style dates in ChangeLogs
"ChangeLog.1+" in the current directory. Old-style dates in ChangeLogs
are not recognized.
USAGE
exit $help ? 0 : 1;
exit !$help;
}
# Print version info and exit if `--version' was specified.
if ($version) {
print "0.1\n";
print "0.2\n";
exit 0;
}
@ -92,7 +94,7 @@ if ($version) {
# options specified, i.e. it matches $author, and its date is in
# the range $from_date <= date <= $to_date.
sub header_match_p ($) {
sub header_match_p {
my $header = shift;
return 0 unless $header;
@ -122,7 +124,7 @@ sub header_match_p ($) {
# command line, i.e. it matches $regexp, and it doesn't match
# $exclude.
sub entry_match_p ($) {
sub entry_match_p {
my $entry = shift;
return 0 unless $entry;
@ -143,7 +145,7 @@ sub entry_match_p ($) {
# lines are not printed, and leading spaces and file names are removed
# from ChangeLog entries.
sub print_log ($$) {
sub print_log {
my ($header, $entry) = @_;
my $output = '';
@ -172,7 +174,7 @@ sub print_log ($$) {
# Scan LOG for matching entries, and print them to standard output.
sub parse_changelog ($) {
sub parse_changelog {
my $log = shift;
my $entry = undef;
my $header = undef;
@ -219,8 +221,8 @@ sub parse_changelog ($) {
close IN;
if ($reverse) {
while (defined (my $entry = pop @entries)) {
print $entry;
for (my $entry = @entries; $entry; $entry--) {
print $entries[$entry-1];
}
}
}
@ -230,9 +232,19 @@ sub parse_changelog ($) {
# If files were specified on the command line, parse those files in the
# order supplied by the user; otherwise parse default files ChangeLog and
# ChangeLog.9...ChangeLog.1 according to $reverse.
# ChangeLog.1+ according to $reverse.
unless (@ARGV > 0) {
@ARGV = ("ChangeLog", map {"ChangeLog.$_"} reverse 1..9);
@ARGV = ("ChangeLog");
push @ARGV,
map {"ChangeLog.$_"}
sort {$b <=> $a}
map {/\.(\d+)$/; $1}
do {
opendir D, '.';
grep /^ChangeLog\.\d+$/, readdir D;
};
@ARGV = reverse @ARGV if $reverse;
}