diff options
| -rw-r--r-- | lib-src/ChangeLog | 12 | ||||
| -rwxr-xr-x | lib-src/grep-changelog | 62 |
2 files changed, 49 insertions, 25 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 9876b0b041a..4e995ff185a 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -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. diff --git a/lib-src/grep-changelog b/lib-src/grep-changelog index 9baf0213db7..38fce879c7a 100755 --- a/lib-src/grep-changelog +++ b/lib-src/grep-changelog @@ -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 +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; } |
