Mercurial > emacs
annotate lib-src/rcs2log @ 55434:f88632e54afb
2004-05-08 John Wiegley <johnw@newartisans.com>
* iswitchb.el (iswitchb-use-virtual-buffers): Added support for
"virtual buffers" (off by default), which makes it possible to
switch to the buffers of recently files. When a buffer name
search fails, and this option is on, iswitchb will look at the
list of recently visited files, and permit matching against those
names. When the user hits RET on a match, it will revisit that
file.
(iswitchb-read-buffer): Added two optional arguments, which makes
isearchb.el possible.
(iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match,
iswitchb-next-match): Added support for virtual buffers.
author | John Wiegley <johnw@newartisans.com> |
---|---|
date | Sat, 08 May 2004 13:00:52 +0000 |
parents | 860258597b78 |
children | 23a17af379b1 8f4a3987f4a8 4c90ffeb71c5 |
rev | line source |
---|---|
12507
da322c027bf0
Replace `#!/bin/sh' with `#! /bin/sh', for benefit of systems
Paul Eggert <eggert@twinsun.com>
parents:
12408
diff
changeset
|
1 #! /bin/sh |
527 | 2 |
3 # RCS to ChangeLog generator | |
4 | |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
5 Help=' |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
6 Generate ChangeLog entries from RCS files (perhaps in a CVS repository) |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
7 and the ChangeLog file (if any). An RCS file typically has a name |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
8 ending in ",v", and represents the entire history of a file that is |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
9 under revision control. The ChangeLog file logs entries for changes, |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
10 in reverse chronological order. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
11 |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
12 Generate entries for changes entered into RCS (or CVS) more recently |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
13 than the newest existing entry in the ChangeLog file. You can then |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
14 edit these entries by hand, and prepend them to the ChangeLog file. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
15 |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
16 Output the resulting ChangeLog entries to standard output. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
17 Each entry looks something like this: |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
18 |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
19 2004-04-17 Paul Eggert <eggert@gnu.org> |
527 | 20 |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
21 * rcs2log (Help): Clarify wording of the usage message. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
22 Problem reported by Alan Mackenzie in |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
23 <http://mail.gnu.org/archive/html/bug-gnu-emacs/2004-04/msg00188.html>. |
527 | 24 |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
25 ChangeLog entries contain the current date, full name, email address |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
26 including hostname, the name of the affected file, and commentary. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
27 RCS and CVS logs lack full names and email addresses, so they are |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
28 inferred from login names using a heuristic that can be overridden |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
29 via the -u option. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
30 |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
31 Ignore log entries that start with "#". |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
32 Clump together log entries that start with "{topic} ", |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
33 where "topic" contains neither white space nor "}". |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
34 |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
35 If no FILE is specified, use all files under the working directory |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
36 that are maintained under version control. |
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
37 |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
38 Options: |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
39 |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
40 -c FILE Output ChangeLog entries for FILE (default ChangeLog). |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
41 -h HOSTNAME Use HOSTNAME in change log entries (default current host). |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
42 -i INDENT Indent change log lines by INDENT spaces (default 8). |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
43 -l LENGTH Try to limit log lines to LENGTH characters (default 79). |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
44 -L FILE Use FILE (same format as "rlog") for source of logs. |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
45 -R If no FILEs are given and RCS is used, recurse through working directory. |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
46 -r OPTION Pass OPTION to subsidiary command (either "rlog" or "cvs -q log"). |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
47 -t TABWIDTH Tab stops are every TABWIDTH characters (default 8). |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
48 -u "LOGIN<tab>FULLNAME<tab>EMAILADDR" LOGIN has FULLNAME and EMAILADDR. |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
49 -v Append RCS revision to file names in log lines. |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
50 --help Output help. |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
51 --version Output version number. |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
52 |
23008
26e379429f7f
Update bug report address and copyright.
Paul Eggert <eggert@twinsun.com>
parents:
23002
diff
changeset
|
53 Report bugs to <bug-gnu-emacs@gnu.org>.' |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
54 |
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
55 Id='$Id: rcs2log,v 1.53 2004/02/15 07:41:58 uid65632 Exp $' |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
56 |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
57 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
58 # 2004 Free Software Foundation, Inc. |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
59 |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
60 # This program is free software; you can redistribute it and/or modify |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
61 # it under the terms of the GNU General Public License as published by |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
62 # the Free Software Foundation; either version 2, or (at your option) |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
63 # any later version. |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
64 # |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
65 # This program is distributed in the hope that it will be useful, |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
66 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
67 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
68 # GNU General Public License for more details. |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
69 # |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
70 # You should have received a copy of the GNU General Public License |
15937
ab395798ed22
Change `GNU Emacs' to `this program' in the comment referring the reader
Paul Eggert <eggert@twinsun.com>
parents:
15911
diff
changeset
|
71 # along with this program; see the file COPYING. If not, write to the |
15742 | 72 # Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
73 # Boston, MA 02111-1307, USA. | |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
74 |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
75 Copyright='Copyright (C) 2004 Free Software Foundation, Inc. |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
76 This program comes with NO WARRANTY, to the extent permitted by law. |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
77 You may redistribute copies of this program |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
78 under the terms of the GNU General Public License. |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
79 For more information about these matters, see the files named COPYING. |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
80 Author: Paul Eggert <eggert@twinsun.com>' |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
81 |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
82 # Use the traditional C locale. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
83 LANG=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
84 LANGUAGE=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
85 LC_ALL=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
86 LC_COLLATE=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
87 LC_CTYPE=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
88 LC_MESSAGES=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
89 LC_NUMERIC=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
90 LC_TIME=C |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
91 export LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_TIME |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
92 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
93 # These variables each contain a single ASCII character. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
94 # Unfortunately, there's no portable way of writing these characters |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
95 # in older Unix implementations, other than putting them directly into |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
96 # this text file. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
97 SOH='' # SOH, octal code 001 |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
98 tab=' ' |
3248
9ee93fc9aba0
When given no file arguments, inspect RCS/.* as well
Richard M. Stallman <rms@gnu.org>
parents:
2639
diff
changeset
|
99 nl=' |
9ee93fc9aba0
When given no file arguments, inspect RCS/.* as well
Richard M. Stallman <rms@gnu.org>
parents:
2639
diff
changeset
|
100 ' |
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
101 |
534 | 102 # Parse options. |
103 | |
104 # defaults | |
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
105 AWK=${AWK-awk} |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
106 TMPDIR=${TMPDIR-/tmp} |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
107 changelog=ChangeLog # change log file name |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
108 datearg= # rlog date option |
4783 | 109 hostname= # name of local host (if empty, will deduce it later) |
534 | 110 indent=8 # indent of log line |
111 length=79 # suggested max width of log line | |
11627
2f0766bf8315
(datearg): If rlog options are specified explicitly,
Paul Eggert <eggert@twinsun.com>
parents:
11099
diff
changeset
|
112 logins= # login names for people we know fullnames and mailaddrs of |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
113 loginFullnameMailaddrs= # login<tab>fullname<tab>mailaddr triplets |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
114 logTZ= # time zone for log dates (if empty, use local time) |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
115 recursive= # t if we want recursive rlog |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
116 revision= # t if we want revision numbers |
4783 | 117 rlog_options= # options to pass to rlog |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
118 rlogfile= # log file to read from |
534 | 119 tabwidth=8 # width of horizontal tab |
120 | |
121 while : | |
122 do | |
123 case $1 in | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
124 -c) changelog=${2?}; shift;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
125 -i) indent=${2?}; shift;; |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
126 -h) hostname=${2?}; shift;; |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
127 -l) length=${2?}; shift;; |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
128 -L) rlogfile=${2?}; shift;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
129 -[nu]) # -n is obsolescent; it is replaced by -u. |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
130 case $1 in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
131 -n) case ${2?}${3?}${4?} in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
132 *"$tab"* | *"$nl"*) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
133 echo >&2 "$0: -n '$2' '$3' '$4': tabs, newlines not allowed" |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
134 exit 1;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
135 esac |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
136 login=$2 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
137 lfm=$2$tab$3$tab$4 |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
138 shift; shift; shift;; |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
139 -u) |
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
140 # If $2 is not tab-separated, use colon for separator. |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
141 case ${2?} in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
142 *"$nl"*) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
143 echo >&2 "$0: -u '$2': newlines not allowed" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
144 exit 1;; |
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
145 *"$tab"*) |
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
146 t=$tab;; |
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
147 *) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
148 t=':';; |
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
149 esac |
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
150 case $2 in |
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
151 *"$t"*"$t"*"$t"*) |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
152 echo >&2 "$0: -u '$2': too many fields" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
153 exit 1;; |
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
154 *"$t"*"$t"*) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
155 uf="[^$t]*$t" # An unselected field, followed by a separator. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
156 sf="\\([^$t]*\\)" # The selected field. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
157 login=`expr "X$2" : "X$sf"` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
158 lfm="$login$tab"` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
159 expr "X$2" : "$uf$sf" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
160 `"$tab"` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
161 expr "X$2" : "$uf$uf$sf" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
162 `;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
163 *) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
164 echo >&2 "$0: -u '$2': not enough fields" |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
165 exit 1;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
166 esac |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
167 shift;; |
4783 | 168 esac |
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
169 case $logins in |
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
170 '') logins=$login;; |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
171 ?*) logins=$logins$nl$login;; |
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
172 esac |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
173 case $loginFullnameMailaddrs in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
174 '') loginFullnameMailaddrs=$lfm;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
175 ?*) loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$lfm;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
176 esac;; |
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
177 -r) |
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
178 case $rlog_options in |
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
179 '') rlog_options=${2?};; |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
180 ?*) rlog_options=$rlog_options$nl${2?};; |
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
181 esac |
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
182 shift;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
183 -R) recursive=t;; |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
184 -t) tabwidth=${2?}; shift;; |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
185 -v) revision=t;; |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
186 --version) |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
187 set $Id |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
188 rcs2logVersion=$3 |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
189 echo >&2 "rcs2log (GNU Emacs) $rcs2logVersion$nl$Copyright" |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
190 exit 0;; |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
191 -*) echo >&2 "Usage: $0 [OPTION]... [FILE ...]$nl$Help" |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
192 case $1 in |
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
193 --help) exit 0;; |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
194 *) exit 1;; |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
195 esac;; |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
196 *) break;; |
534 | 197 esac |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
198 shift |
534 | 199 done |
200 | |
2220
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
201 month_data=' |
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
202 m[0]="Jan"; m[1]="Feb"; m[2]="Mar" |
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
203 m[3]="Apr"; m[4]="May"; m[5]="Jun" |
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
204 m[6]="Jul"; m[7]="Aug"; m[8]="Sep" |
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
205 m[9]="Oct"; m[10]="Nov"; m[11]="Dec" |
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
206 ' |
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
207 |
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
208 logdir=$TMPDIR/rcs2log$$ |
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
209 llogout=$logdir/l |
527 | 210 trap exit 1 2 13 15 |
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
211 trap "rm -fr $logdir 2>/dev/null" 0 |
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
212 (umask 077 && exec mkdir $logdir) || exit |
527 | 213 |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
214 # If no rlog-format log file is given, generate one into $rlogfile. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
215 case $rlogfile in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
216 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
217 rlogfile=$logdir/r |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
218 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
219 # If no rlog options are given, |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
220 # log the revisions checked in since the first ChangeLog entry. |
53317
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
221 # Since ChangeLog is only by date, some of these revisions may be |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
222 # duplicates of what's already in ChangeLog; it's the user's |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
223 # responsibility to remove them. |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
224 case $rlog_options in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
225 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
226 if test -s "$changelog" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
227 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
228 e=' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
229 /^[0-9]+-[0-9][0-9]-[0-9][0-9]/{ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
230 # ISO 8601 date |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
231 print $1 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
232 exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
233 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
234 /^... ... [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9]+ /{ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
235 # old-fashioned date and time (Emacs 19.31 and earlier) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
236 '"$month_data"' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
237 year = $5 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
238 for (i=0; i<=11; i++) if (m[i] == $2) break |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
239 dd = $3 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
240 printf "%d-%02d-%02d\n", year, i+1, dd |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
241 exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
242 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
243 ' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
244 d=`$AWK "$e" <"$changelog"` || exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
245 case $d in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
246 ?*) datearg="-d>$d";; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
247 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
248 fi;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
249 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
250 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
251 # Use TZ specified by ChangeLog local variable, if any. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
252 if test -s "$changelog" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
253 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
254 extractTZ=' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
255 /^.*change-log-time-zone-rule['"$tab"' ]*:['"$tab"' ]*"\([^"]*\)".*/{ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
256 s//\1/; p; q |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
257 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
258 /^.*change-log-time-zone-rule['"$tab"' ]*:['"$tab"' ]*t.*/{ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
259 s//UTC0/; p; q |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
260 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
261 ' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
262 logTZ=`tail "$changelog" | sed -n "$extractTZ"` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
263 case $logTZ in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
264 ?*) TZ=$logTZ; export TZ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
265 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
266 fi |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
267 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
268 # If CVS is in use, examine its repository, not the normal RCS files. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
269 if test ! -f CVS/Repository |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
270 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
271 rlog=rlog |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
272 repository= |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
273 else |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
274 rlog='cvs -q log' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
275 repository=`sed 1q <CVS/Repository` || exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
276 test ! -f CVS/Root || CVSROOT=`cat <CVS/Root` || exit |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
277 pository= |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
278 case $CVSROOT in |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
279 /* | :fork:* | :local:*) ;; |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
280 */*) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
281 # remote repository |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
282 pository=`expr "X$CVSROOT" : '[^/]*\(.*\)'`;; |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
283 esac |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
284 case $pository in |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
285 '') |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
286 # local repository |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
287 case $repository in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
288 /*) ;; |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
289 *) |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
290 repository=${CVSROOT?}/$repository |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
291 case $repository in |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
292 :fork:* | :local:*) |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
293 repository=`expr "$repository" : ':[^:]*:\(.*\)'`;; |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
294 esac;; |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
295 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
296 if test ! -d "$repository" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
297 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
298 echo >&2 "$0: $repository: bad repository (see CVS/Repository)" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
299 exit 1 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
300 fi |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
301 pository=$repository;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
302 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
303 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
304 # Ensure that $pository ends in exactly one slash. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
305 while : |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
306 do |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
307 case $pository in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
308 *//) pository=`expr "X$pository" : 'X\(.*\)/'`;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
309 */) break;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
310 *) pository=$pository/; break;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
311 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
312 done |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
313 |
53317
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
314 # If no rlog options are given, and if we are in a tagged CVS branch, |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
315 # log only the changes in that branch. |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
316 case $rlog_options in |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
317 '') |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
318 if test -f CVS/Tag |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
319 then |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
320 CVSTAG=`cat <CVS/Tag` || exit |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
321 case $CVSTAG in |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
322 T?*) |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
323 rlog_options=-r`expr "$CVSTAG" : 'T\(.*\)'`;; |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
324 *) |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
325 echo >&2 "$0: invalid CVS/Tag"; exit 1;; |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
326 esac |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
327 fi;; |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
328 esac |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
329 fi |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
330 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
331 # Use $rlog's -zLT option, if $rlog supports it. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
332 case `$rlog -zLT 2>&1` in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
333 *' option'*) ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
334 *) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
335 case $rlog_options in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
336 '') rlog_options=-zLT;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
337 ?*) rlog_options=-zLT$nl$rlog_options;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
338 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
339 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
340 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
341 # With no arguments, examine all files under the RCS directory. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
342 case $# in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
343 0) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
344 case $repository in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
345 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
346 oldIFS=$IFS |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
347 IFS=$nl |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
348 case $recursive in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
349 t) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
350 RCSdirs=`find . -name RCS -type d -print` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
351 filesFromRCSfiles='s|,v$||; s|/RCS/|/|; s|^\./||' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
352 files=` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
353 { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
354 case $RCSdirs in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
355 ?*) find $RCSdirs \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
356 -type f \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
357 ! -name '*_' \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
358 ! -name ',*,' \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
359 ! -name '.*_' \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
360 ! -name .rcsfreeze.log \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
361 ! -name .rcsfreeze.ver \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
362 -print;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
363 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
364 find . -name '*,v' -print |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
365 } | |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
366 sort -u | |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
367 sed "$filesFromRCSfiles" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
368 `;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
369 *) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
370 files= |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
371 for file in RCS/.* RCS/* .*,v *,v |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
372 do |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
373 case $file in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
374 RCS/. | RCS/.. | RCS/,*, | RCS/*_) continue;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
375 RCS/.rcsfreeze.log | RCS/.rcsfreeze.ver) continue;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
376 RCS/.\* | RCS/\* | .\*,v | \*,v) test -f "$file" || continue;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
377 RCS/*,v | RCS/.*,v) ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
378 RCS/* | RCS/.*) test -f "$file" || continue;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
379 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
380 case $files in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
381 '') files=$file;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
382 ?*) files=$files$nl$file;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
383 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
384 done |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
385 case $files in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
386 '') exit 0;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
387 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
388 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
389 set x $files |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
390 shift |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
391 IFS=$oldIFS;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
392 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
393 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
394 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
395 case $datearg in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
396 ?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogfile;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
397 '') $rlog $rlog_options ${1+"$@"} >$rlogfile;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
398 esac || exit;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
399 esac |
527 | 400 |
401 | |
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
402 # Prefer the POSIX-style -k options, since POSIX 1003.1-2001 prohibits |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
403 # support for the traditional-style +M -N options. |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
404 SORT_K_OPTIONS='-k 3,4r -k 5 -k 1' |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
405 sort $SORT_K_OPTIONS </dev/null 2>/dev/null || SORT_K_OPTIONS='+2 -4r +4 +0' |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
406 |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
407 |
527 | 408 # Get the full name of each author the logs mention, and set initialize_fullname |
409 # to awk code that initializes the `fullname' awk associative array. | |
410 # Warning: foreign authors (i.e. not known in the passwd file) are mishandled; | |
411 # you have to fix the resulting output by hand. | |
412 | |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
413 initialize_fullname= |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
414 initialize_mailaddr= |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
415 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
416 case $loginFullnameMailaddrs in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
417 ?*) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
418 case $loginFullnameMailaddrs in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
419 *\"* | *\\*) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
420 sed 's/["\\]/\\&/g' >$llogout <<EOF || exit |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
421 $loginFullnameMailaddrs |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
422 EOF |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
423 loginFullnameMailaddrs=`cat $llogout`;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
424 esac |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
425 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
426 oldIFS=$IFS |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
427 IFS=$nl |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
428 for loginFullnameMailaddr in $loginFullnameMailaddrs |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
429 do |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
430 IFS=$tab |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
431 set x $loginFullnameMailaddr |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
432 login=$2 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
433 fullname=$3 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
434 mailaddr=$4 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
435 initialize_fullname="$initialize_fullname |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
436 fullname[\"$login\"] = \"$fullname\"" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
437 initialize_mailaddr="$initialize_mailaddr |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
438 mailaddr[\"$login\"] = \"$mailaddr\"" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
439 done |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
440 IFS=$oldIFS;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
441 esac |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
442 |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
443 case $logins in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
444 ?*) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
445 sort -u -o $llogout <<EOF |
4783 | 446 $logins |
447 EOF | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
448 ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
449 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
450 : ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
451 esac >$llogout || exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
452 |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
453 output_authors='/^date: / { |
12066
b9b0b3f96dc2
(output_authors): Allow ':' in time zone, as per ISO 8601 and RCS 5.6.8 beta.
Paul Eggert <eggert@twinsun.com>
parents:
11627
diff
changeset
|
454 if ($2 ~ /^[0-9]*[-\/][0-9][0-9][-\/][0-9][0-9]$/ && $3 ~ /^[0-9][0-9]:[0-9][0-9]:[0-9][0-9][-+0-9:]*;$/ && $4 == "author:" && $5 ~ /^[^;]*;$/) { |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
455 print substr($5, 1, length($5)-1) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
456 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
457 }' |
527 | 458 authors=` |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
459 $AWK "$output_authors" <"$rlogfile" | sort -u | comm -23 - $llogout |
527 | 460 ` |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
461 case $authors in |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
462 ?*) |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
463 cat >$llogout <<EOF || exit |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
464 $authors |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
465 EOF |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
466 initialize_author_script='s/["\\]/\\&/g; s/.*/author[\"&\"] = 1/' |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
467 initialize_author=`sed -e "$initialize_author_script" <$llogout` |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
468 awkscript=' |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
469 BEGIN { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
470 alphabet = "abcdefghijklmnopqrstuvwxyz" |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
471 ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
472 '"$initialize_author"' |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
473 } |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
474 { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
475 if (author[$1]) { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
476 fullname = $5 |
4504
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
477 if (fullname ~ /[0-9]+-[^(]*\([0-9]+\)$/) { |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
478 # Remove the junk from fullnames like "0000-Admin(0000)". |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
479 fullname = substr(fullname, index(fullname, "-") + 1) |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
480 fullname = substr(fullname, 1, index(fullname, "(") - 1) |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
481 } |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
482 if (fullname ~ /,[^ ]/) { |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
483 # Some sites put comma-separated junk after the fullname. |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
484 # Remove it, but leave "Bill Gates, Jr" alone. |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
485 fullname = substr(fullname, 1, index(fullname, ",") - 1) |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
486 } |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
487 abbr = index(fullname, "&") |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
488 if (abbr) { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
489 a = substr($1, 1, 1) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
490 A = a |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
491 i = index(alphabet, a) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
492 if (i) A = substr(ALPHABET, i, 1) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
493 fullname = substr(fullname, 1, abbr-1) A substr($1, 2) substr(fullname, abbr+1) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
494 } |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
495 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
496 # Quote quotes and backslashes properly in full names. |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
497 # Do not use gsub; traditional awk lacks it. |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
498 quoted = "" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
499 rest = fullname |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
500 for (;;) { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
501 p = index(rest, "\\") |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
502 q = index(rest, "\"") |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
503 if (p) { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
504 if (q && q<p) p = q |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
505 } else { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
506 if (!q) break |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
507 p = q |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
508 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
509 quoted = quoted substr(rest, 1, p-1) "\\" substr(rest, p, 1) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
510 rest = substr(rest, p+1) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
511 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
512 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
513 printf "fullname[\"%s\"] = \"%s%s\"\n", $1, quoted, rest |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
514 author[$1] = 0 |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
515 } |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
516 } |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
517 ' |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
518 |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
519 initialize_fullname=` |
22999
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
520 { |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
521 (getent passwd $authors) || |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
522 ( |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
523 cat /etc/passwd |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
524 for author in $authors |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
525 do NIS_PATH= nismatch $author passwd.org_dir |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
526 done |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
527 ypmatch $authors passwd |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
528 ) |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
529 } 2>/dev/null | |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
530 $AWK -F: "$awkscript" |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
531 `$initialize_fullname;; |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
532 esac |
527 | 533 |
534 | |
535 # Function to print a single log line. | |
536 # We don't use awk functions, to stay compatible with old awk versions. | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
537 # `Log' is the log message. |
594 | 538 # `files' contains the affected files. |
527 | 539 printlogline='{ |
540 | |
541 # Following the GNU coding standards, rewrite | |
542 # * file: (function): comment | |
543 # to | |
544 # * file (function): comment | |
41649
41d73d9565de
(Copyright): Add '(C)' as per coding guidelines.
Paul Eggert <eggert@twinsun.com>
parents:
39150
diff
changeset
|
545 if (Log ~ /^\([^)]*\):[\t\n ]/) { |
527 | 546 i = index(Log, ")") |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
547 filefunc = substr(Log, 1, i) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
548 while ((j = index(filefunc, "\n"))) { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
549 files = files " " substr(filefunc, 1, j-1) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
550 filefunc = substr(filefunc, j+1) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
551 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
552 files = files " " filefunc |
527 | 553 Log = substr(Log, i+3) |
554 } | |
555 | |
556 # If "label: comment" is too long, break the line after the ":". | |
557 sep = " " | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
558 i = index(Log, "\n") |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
559 if ('"$length"' <= '"$indent"' + 1 + length(files) + i) sep = "\n" indent_string |
527 | 560 |
561 # Print the label. | |
534 | 562 printf "%s*%s:", indent_string, files |
527 | 563 |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
564 # Print each line of the log. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
565 while (i) { |
4858
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
566 logline = substr(Log, 1, i-1) |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
567 if (logline ~ /[^'"$tab"' ]/) { |
4858
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
568 printf "%s%s\n", sep, logline |
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
569 } else { |
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
570 print "" |
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
571 } |
534 | 572 sep = indent_string |
527 | 573 Log = substr(Log, i+1) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
574 i = index(Log, "\n") |
527 | 575 } |
576 }' | |
577 | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
578 # Pattern to match the `revision' line of rlog output. |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
579 rlog_revision_pattern='^revision [0-9]+\.[0-9]+(\.[0-9]+\.[0-9]+)*(['"$tab"' ]+locked by: [^'"$tab"' $,.0-9:;@]*[^'"$tab"' $,:;@][^'"$tab"' $,.0-9:;@]*;)?['"$tab"' ]*$' |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
580 |
4783 | 581 case $hostname in |
582 '') | |
583 hostname=`( | |
584 hostname || uname -n || uuname -l || cat /etc/whoami | |
585 ) 2>/dev/null` || { | |
586 echo >&2 "$0: cannot deduce hostname" | |
587 exit 1 | |
588 } | |
14173
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
589 |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
590 case $hostname in |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
591 *.*) ;; |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
592 *) |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
593 domainname=`(domainname) 2>/dev/null` && |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
594 case $domainname in |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
595 *.*) hostname=$hostname.$domainname;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
596 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
597 esac;; |
4783 | 598 esac |
527 | 599 |
600 | |
601 # Process the rlog output, generating ChangeLog style entries. | |
602 | |
603 # First, reformat the rlog output so that each line contains one log entry. | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
604 # Transliterate \n to SOH so that multiline entries fit on a single line. |
527 | 605 # Discard irrelevant rlog output. |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
606 $AWK ' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
607 BEGIN { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
608 pository = "'"$pository"'" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
609 SOH="'"$SOH"'" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
610 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
611 /^RCS file: / { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
612 if (pository != "") { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
613 filename = substr($0, 11) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
614 if (substr(filename, 1, length(pository)) == pository) { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
615 filename = substr(filename, length(pository) + 1) |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
616 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
617 if (filename ~ /,v$/) { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
618 filename = substr(filename, 1, length(filename) - 2) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
619 } |
16507
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
620 if (filename ~ /(^|\/)Attic\/[^\/]*$/) { |
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
621 i = length(filename) |
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
622 while (substr(filename, i, 1) != "/") i-- |
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
623 filename = substr(filename, 1, i - 6) substr(filename, i + 1) |
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
624 } |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
625 } |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
626 rev = "?" |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
627 } |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
628 /^Working file: / { if (repository == "") filename = substr($0, 15) } |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
629 /'"$rlog_revision_pattern"'/, /^(-----------*|===========*)$/ { |
18452
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
630 line = $0 |
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
631 if (line ~ /'"$rlog_revision_pattern"'/) { |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
632 rev = $2 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
633 next |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
634 } |
18452
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
635 if (line ~ /^date: [0-9][- +\/0-9:]*;/) { |
8549 | 636 date = $2 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
637 if (date ~ /\//) { |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
638 # This is a traditional RCS format date YYYY/MM/DD. |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
639 # Replace "/"s with "-"s to get ISO format. |
8549 | 640 newdate = "" |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
641 while ((i = index(date, "/")) != 0) { |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
642 newdate = newdate substr(date, 1, i-1) "-" |
8549 | 643 date = substr(date, i+1) |
644 } | |
645 date = newdate date | |
646 } | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
647 time = substr($3, 1, length($3) - 1) |
527 | 648 author = substr($5, 1, length($5)-1) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
649 printf "%s%s%s%s%s%s%s%s%s%s", filename, SOH, rev, SOH, date, SOH, time, SOH, author, SOH |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
650 rev = "?" |
527 | 651 next |
652 } | |
18452
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
653 if (line ~ /^branches: /) { next } |
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
654 if (line ~ /^(-----------*|===========*)$/) { print ""; next } |
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
655 if (line == "Initial revision" || line ~ /^file .+ was initially added on branch .+\.$/) { |
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
656 line = "New file." |
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
657 } |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
658 printf "%s%s", line, SOH |
527 | 659 } |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
660 ' <"$rlogfile" | |
527 | 661 |
662 # Now each line is of the form | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
663 # FILENAME@REVISION@YYYY-MM-DD@HH:MM:SS[+-TIMEZONE]@AUTHOR@LOG |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
664 # where @ stands for an SOH (octal code 001), |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
665 # and each line of LOG is terminated by SOH instead of \n. |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
666 # Sort the log entries, first by date+time (in reverse order), |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
667 # then by author, then by log entry, and finally by file name and revision |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
668 # (just in case). |
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
669 sort -t"$SOH" $SORT_K_OPTIONS | |
527 | 670 |
671 # Finally, reformat the sorted log entries. | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
672 $AWK -F"$SOH" ' |
527 | 673 BEGIN { |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
674 logTZ = "'"$logTZ"'" |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
675 revision = "'"$revision"'" |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
676 |
4783 | 677 # Initialize the fullname and mailaddr associative arrays. |
527 | 678 '"$initialize_fullname"' |
4783 | 679 '"$initialize_mailaddr"' |
527 | 680 |
534 | 681 # Initialize indent string. |
682 indent_string = "" | |
683 i = '"$indent"' | |
684 if (0 < '"$tabwidth"') | |
685 for (; '"$tabwidth"' <= i; i -= '"$tabwidth"') | |
686 indent_string = indent_string "\t" | |
687 while (1 <= i--) | |
688 indent_string = indent_string " " | |
527 | 689 } |
636
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
690 |
527 | 691 { |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
692 newlog = "" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
693 for (i = 6; i < NF; i++) newlog = newlog $i "\n" |
636
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
694 |
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
695 # Ignore log entries prefixed by "#". |
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
696 if (newlog ~ /^#/) { next } |
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
697 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
698 if (Log != newlog || date != $3 || author != $5) { |
594 | 699 |
527 | 700 # The previous log and this log differ. |
594 | 701 |
702 # Print the old log. | |
527 | 703 if (date != "") '"$printlogline"' |
704 | |
594 | 705 # Logs that begin with "{clumpname} " should be grouped together, |
706 # and the clumpname should be removed. | |
707 # Extract the new clumpname from the log header, | |
708 # and use it to decide whether to output a blank line. | |
709 newclumpname = "" | |
710 sep = "\n" | |
602
d2de231ee7f5
Don't duplicate most recent logs. Fix bug in dates after Feb 29 in leap year.
Paul Eggert <eggert@twinsun.com>
parents:
594
diff
changeset
|
711 if (date == "") sep = "" |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
712 if (newlog ~ /^\{[^'"$tab"' }]*}['"$tab"' ]/) { |
594 | 713 i = index(newlog, "}") |
714 newclumpname = substr(newlog, 1, i) | |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
715 while (substr(newlog, i+1) ~ /^['"$tab"' ]/) i++ |
594 | 716 newlog = substr(newlog, i+1) |
41649
41d73d9565de
(Copyright): Add '(C)' as per coding guidelines.
Paul Eggert <eggert@twinsun.com>
parents:
39150
diff
changeset
|
717 if (clumpname == newclumpname && date == $3 && author == $5) sep = "" |
594 | 718 } |
719 printf sep | |
720 clumpname = newclumpname | |
721 | |
527 | 722 # Get ready for the next log. |
723 Log = newlog | |
534 | 724 if (files != "") |
725 for (i in filesknown) | |
726 filesknown[i] = 0 | |
527 | 727 files = "" |
728 } | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
729 if (date != $3 || author != $5) { |
527 | 730 # The previous date+author and this date+author differ. |
731 # Print the new one. | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
732 date = $3 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
733 time = $4 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
734 author = $5 |
527 | 735 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
736 zone = "" |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
737 if (logTZ && ((i = index(time, "-")) || (i = index(time, "+")))) |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
738 zone = " " substr(time, i) |
527 | 739 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
740 # Print "date[ timezone] fullname <email address>". |
4783 | 741 # Get fullname and email address from associative arrays; |
742 # default to author and author@hostname if not in arrays. | |
534 | 743 if (fullname[author]) |
4783 | 744 auth = fullname[author] |
534 | 745 else |
4783 | 746 auth = author |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
747 printf "%s%s %s ", date, zone, auth |
4783 | 748 if (mailaddr[author]) |
8496
2dba6eb73c65
Use <> to delimit email address.
Richard M. Stallman <rms@gnu.org>
parents:
4858
diff
changeset
|
749 printf "<%s>\n\n", mailaddr[author] |
4783 | 750 else |
8496
2dba6eb73c65
Use <> to delimit email address.
Richard M. Stallman <rms@gnu.org>
parents:
4858
diff
changeset
|
751 printf "<%s@%s>\n\n", author, "'"$hostname"'" |
527 | 752 } |
534 | 753 if (! filesknown[$1]) { |
754 filesknown[$1] = 1 | |
594 | 755 if (files == "") files = " " $1 |
756 else files = files ", " $1 | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
757 if (revision && $2 != "?") files = files " " $2 |
534 | 758 } |
527 | 759 } |
760 END { | |
761 # Print the last log. | |
594 | 762 if (date != "") { |
763 '"$printlogline"' | |
764 printf "\n" | |
765 } | |
527 | 766 } |
767 ' && | |
768 | |
769 | |
770 # Exit successfully. | |
771 | |
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
772 exec rm -fr $logdir |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
773 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
774 # Local Variables: |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
775 # tab-width:4 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
776 # End: |
52401 | 777 |
778 # arch-tag: cea067bd-a552-4254-ba17-078208933073 |