Mercurial > emacs
changeset 54324:bdf4aa3226e7
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.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Tue, 09 Mar 2004 22:46:29 +0000 |
parents | c1238bacc77f |
children | 721573026f56 |
files | lib-src/grep-changelog |
diffstat | 1 files changed, 37 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/lib-src/grep-changelog Tue Mar 09 15:28:27 2004 +0000 +++ b/lib-src/grep-changelog Tue Mar 09 22:46:29 2004 +0000 @@ -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 @@ 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ 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 @@ # 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; }