Mercurial > emacs
diff lib-src/grep-changelog @ 89909:68c22ea6027c
Sync to HEAD
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 16 Apr 2004 12:51:06 +0000 |
parents | 375f2633d815 |
children | f9a65d7ebd29 |
line wrap: on
line diff
--- a/lib-src/grep-changelog Thu Apr 15 01:08:34 2004 +0000 +++ b/lib-src/grep-changelog Fri Apr 16 12:51:06 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; } @@ -241,4 +253,5 @@ } +# arch-tag: 9e4f6749-e053-4bb7-b3ad-11947318418e # grep-changelog ends here.