Mercurial > emacs
annotate lib-src/rcs2log @ 107437:0a2bb00a71bd
* s-region.el: Move to obsolete.
| author | Juri Linkov <juri@jurta.org> |
|---|---|
| date | Sat, 20 Mar 2010 03:29:12 +0200 |
| parents | f039ef236594 |
| children | 794f724ca655 |
| 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 | |
|
94828
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
5 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, |
| 106790 | 6 # 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
|
100898
c24da9d5750f
(Copyright): Update copyright for 2009.
Glenn Morris <rgm@gnu.org>
parents:
94828
diff
changeset
|
7 # Free Software Foundation, Inc. |
|
94828
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
8 |
|
101095
68e6b02ce6b6
Comment (add Author: header).
Glenn Morris <rgm@gnu.org>
parents:
100898
diff
changeset
|
9 # Author: Paul Eggert <eggert@twinsun.com> |
|
68e6b02ce6b6
Comment (add Author: header).
Glenn Morris <rgm@gnu.org>
parents:
100898
diff
changeset
|
10 |
|
94828
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
11 # This program is free software: you can redistribute it and/or modify |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
12 # it under the terms of the GNU General Public License as published by |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
13 # the Free Software Foundation, either version 3 of the License, or |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
14 # (at your option) any later version. |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
15 |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
16 # This program is distributed in the hope that it will be useful, |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
19 # GNU General Public License for more details. |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
20 |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
21 # You should have received a copy of the GNU General Public License |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
22 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
23 |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
24 |
| 106790 | 25 Copyright='Copyright (C) 2010 Free Software Foundation, Inc. |
|
94828
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
26 This program comes with NO WARRANTY, to the extent permitted by law. |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
27 You may redistribute copies of this program |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
28 under the terms of the GNU General Public License. |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
29 For more information about these matters, see the files named COPYING. |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
30 Author: Paul Eggert <eggert@twinsun.com>' |
|
3a4bc081639c
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79748
diff
changeset
|
31 |
|
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
32 Help=' |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
33 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
|
34 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
|
35 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
|
36 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
|
37 in reverse chronological order. |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
38 |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
39 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
|
40 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
|
41 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
|
42 |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
43 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
|
44 Each entry looks something like this: |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
45 |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
46 2004-04-17 Paul Eggert <eggert@gnu.org> |
| 527 | 47 |
|
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
48 * 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
|
49 Problem reported by Alan Mackenzie in |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
50 <http://mail.gnu.org/archive/html/bug-gnu-emacs/2004-04/msg00188.html>. |
| 527 | 51 |
|
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
52 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
|
53 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
|
54 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
|
55 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
|
56 via the -u option. |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
57 |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
58 Ignore log entries that start with "#". |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
59 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
|
60 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
|
61 |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
62 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
|
63 that are maintained under version control. |
|
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
64 |
|
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
65 Options: |
|
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
66 |
|
54965
860258597b78
* rcs2log (Help): Clarify wording of the usage message.
Paul Eggert <eggert@twinsun.com>
parents:
53947
diff
changeset
|
67 -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
|
68 -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
|
69 -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
|
70 -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
|
71 -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
|
72 -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
|
73 -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
|
74 -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
|
75 -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
|
76 -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
|
77 --help Output help. |
|
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
78 --version Output version number. |
|
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
79 |
|
23008
26e379429f7f
Update bug report address and copyright.
Paul Eggert <eggert@twinsun.com>
parents:
23002
diff
changeset
|
80 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
|
81 |
| 64083 | 82 Id='$Id$' |
|
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
83 |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
84 # Use the traditional C locale. |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
85 LANG=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
86 LANGUAGE=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
87 LC_ALL=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
88 LC_COLLATE=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
89 LC_CTYPE=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
90 LC_MESSAGES=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
91 LC_NUMERIC=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
92 LC_TIME=C |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
93 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
|
94 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
95 # 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
|
96 # 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
|
97 # 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
|
98 # this text file. |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
99 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
|
100 tab=' ' |
|
3248
9ee93fc9aba0
When given no file arguments, inspect RCS/.* as well
Richard M. Stallman <rms@gnu.org>
parents:
2639
diff
changeset
|
101 nl=' |
|
9ee93fc9aba0
When given no file arguments, inspect RCS/.* as well
Richard M. Stallman <rms@gnu.org>
parents:
2639
diff
changeset
|
102 ' |
|
1800
05cb79ebdb23
Add copyright and authorship notices.
Paul Eggert <eggert@twinsun.com>
parents:
1228
diff
changeset
|
103 |
| 534 | 104 # Parse options. |
| 105 | |
| 106 # defaults | |
|
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
107 AWK=${AWK-awk} |
|
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
108 TMPDIR=${TMPDIR-/tmp} |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
109 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
|
110 datearg= # rlog date option |
| 4783 | 111 hostname= # name of local host (if empty, will deduce it later) |
| 534 | 112 indent=8 # indent of log line |
| 113 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
|
114 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
|
115 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
|
116 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
|
117 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
|
118 revision= # t if we want revision numbers |
| 4783 | 119 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
|
120 rlogfile= # log file to read from |
| 534 | 121 tabwidth=8 # width of horizontal tab |
| 122 | |
| 123 while : | |
| 124 do | |
| 125 case $1 in | |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
126 -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
|
127 -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
|
128 -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
|
129 -l) length=${2?}; shift;; |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
130 -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
|
131 -[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
|
132 case $1 in |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
133 -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
|
134 *"$tab"* | *"$nl"*) |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
135 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
|
136 exit 1;; |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
137 esac |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
138 login=$2 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
139 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
|
140 shift; shift; shift;; |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
141 -u) |
|
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
142 # 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
|
143 case ${2?} in |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
144 *"$nl"*) |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
145 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
|
146 exit 1;; |
|
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
147 *"$tab"*) |
|
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
148 t=$tab;; |
|
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
149 *) |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
150 t=':';; |
|
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
151 esac |
|
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
152 case $2 in |
|
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
153 *"$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
|
154 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
|
155 exit 1;; |
|
11082
aee85fcd9d25
Treat -u 'LOGIN:FULLNAME:MAILADDR' as if it were
Paul Eggert <eggert@twinsun.com>
parents:
11073
diff
changeset
|
156 *"$t"*"$t"*) |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
157 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
|
158 sf="\\([^$t]*\\)" # The selected field. |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
159 login=`expr "X$2" : "X$sf"` |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
160 lfm="$login$tab"` |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
161 expr "X$2" : "$uf$sf" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
162 `"$tab"` |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
163 expr "X$2" : "$uf$uf$sf" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
164 `;; |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
165 *) |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
166 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
|
167 exit 1;; |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
168 esac |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
169 shift;; |
| 4783 | 170 esac |
|
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
171 case $logins in |
|
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
172 '') logins=$login;; |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
173 ?*) logins=$logins$nl$login;; |
|
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
174 esac |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
175 case $loginFullnameMailaddrs in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
176 '') loginFullnameMailaddrs=$lfm;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
177 ?*) loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$lfm;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
178 esac;; |
|
17741
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
179 -r) |
|
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
180 case $rlog_options in |
|
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
181 '') rlog_options=${2?};; |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
182 ?*) 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
|
183 esac |
|
0c832661d9b4
(loginFullnameMailaddrs, logins, rlog_options, files): Don't prepend $nl
Paul Eggert <eggert@twinsun.com>
parents:
17740
diff
changeset
|
184 shift;; |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
185 -R) recursive=t;; |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
186 -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
|
187 -v) revision=t;; |
|
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
188 --version) |
|
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
189 set $Id |
|
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
190 rcs2logVersion=$3 |
|
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
191 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
|
192 exit 0;; |
|
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
193 -*) 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
|
194 case $1 in |
|
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
195 --help) exit 0;; |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
196 *) exit 1;; |
|
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
197 esac;; |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
198 *) break;; |
| 534 | 199 esac |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
200 shift |
| 534 | 201 done |
| 202 | |
|
2220
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
203 month_data=' |
|
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
204 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
|
205 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
|
206 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
|
207 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
|
208 ' |
|
66371f0b8aff
Some awks don't understand "\r". Code around this.
Paul Eggert <eggert@twinsun.com>
parents:
1800
diff
changeset
|
209 |
|
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
210 logdir=$TMPDIR/rcs2log$$ |
|
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
211 llogout=$logdir/l |
| 527 | 212 trap exit 1 2 13 15 |
|
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
213 trap "rm -fr $logdir 2>/dev/null" 0 |
|
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
214 (umask 077 && exec mkdir $logdir) || exit |
| 527 | 215 |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
216 # 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
|
217 case $rlogfile in |
|
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 rlogfile=$logdir/r |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
220 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
221 # If no rlog options are given, |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
222 # 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
|
223 # 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
|
224 # 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
|
225 # responsibility to remove them. |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
226 case $rlog_options in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
227 '') |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
228 if test -s "$changelog" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
229 then |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
230 e=' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
231 /^[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
|
232 # ISO 8601 date |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
233 print $1 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
234 exit |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
235 } |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
236 /^... ... [ 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
|
237 # 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
|
238 '"$month_data"' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
239 year = $5 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
240 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
|
241 dd = $3 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
242 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
|
243 exit |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
244 } |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
245 ' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
246 d=`$AWK "$e" <"$changelog"` || exit |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
247 case $d in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
248 ?*) datearg="-d>$d";; |
|
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 fi;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
251 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
252 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
253 # 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
|
254 if test -s "$changelog" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
255 then |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
256 extractTZ=' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
257 /^.*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
|
258 s//\1/; p; q |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
259 } |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
260 /^.*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
|
261 s//UTC0/; p; q |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
262 } |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
263 ' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
264 logTZ=`tail "$changelog" | sed -n "$extractTZ"` |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
265 case $logTZ in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
266 ?*) TZ=$logTZ; export TZ;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
267 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
268 fi |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
269 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
270 # 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
|
271 if test ! -f CVS/Repository |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
272 then |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
273 rlog=rlog |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
274 repository= |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
275 else |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
276 rlog='cvs -q log' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
277 repository=`sed 1q <CVS/Repository` || exit |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
278 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
|
279 pository= |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
280 case $CVSROOT in |
|
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
281 /* | :fork:* | :local:*) ;; |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
282 */*) |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
283 # remote repository |
|
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
284 pository=`expr "X$CVSROOT" : '[^/]*\(.*\)'`;; |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
285 esac |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
286 case $pository in |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
287 '') |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
288 # local repository |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
289 case $repository in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
290 /*) ;; |
|
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
291 *) |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
292 repository=${CVSROOT?}/$repository |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
293 case $repository in |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
294 :fork:* | :local:*) |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
295 repository=`expr "$repository" : ':[^:]*:\(.*\)'`;; |
|
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
296 esac;; |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
297 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
298 if test ! -d "$repository" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
299 then |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
300 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
|
301 exit 1 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
302 fi |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
303 pository=$repository;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
304 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
305 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
306 # 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
|
307 while : |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
308 do |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
309 case $pository in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
310 *//) pository=`expr "X$pository" : 'X\(.*\)/'`;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
311 */) break;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
312 *) pository=$pository/; break;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
313 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
314 done |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
315 |
|
53317
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
316 # 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
|
317 # 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
|
318 case $rlog_options in |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
319 '') |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
320 if test -f CVS/Tag |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
321 then |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
322 CVSTAG=`cat <CVS/Tag` || exit |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
323 case $CVSTAG in |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
324 T?*) |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
325 rlog_options=-r`expr "$CVSTAG" : 'T\(.*\)'`;; |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
326 *) |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
327 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
|
328 esac |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
329 fi;; |
|
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
330 esac |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
331 fi |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
332 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
333 # 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
|
334 case `$rlog -zLT 2>&1` in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
335 *' option'*) ;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
336 *) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
337 case $rlog_options in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
338 '') rlog_options=-zLT;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
339 ?*) rlog_options=-zLT$nl$rlog_options;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
340 esac;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
341 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
342 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
343 # 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
|
344 case $# in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
345 0) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
346 case $repository in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
347 '') |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
348 oldIFS=$IFS |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
349 IFS=$nl |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
350 case $recursive in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
351 t) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
352 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
|
353 filesFromRCSfiles='s|,v$||; s|/RCS/|/|; s|^\./||' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
354 files=` |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
355 { |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
356 case $RCSdirs in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
357 ?*) find $RCSdirs \ |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
358 -type f \ |
|
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 ',*,' \ |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
361 ! -name '.*_' \ |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
362 ! -name .rcsfreeze.log \ |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
363 ! -name .rcsfreeze.ver \ |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
364 -print;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
365 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
366 find . -name '*,v' -print |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
367 } | |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
368 sort -u | |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
369 sed "$filesFromRCSfiles" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
370 `;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
371 *) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
372 files= |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
373 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
|
374 do |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
375 case $file in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
376 RCS/. | RCS/.. | RCS/,*, | RCS/*_) continue;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
377 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
|
378 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
|
379 RCS/*,v | RCS/.*,v) ;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
380 RCS/* | RCS/.*) test -f "$file" || continue;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
381 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
382 case $files in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
383 '') files=$file;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
384 ?*) files=$files$nl$file;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
385 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
386 done |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
387 case $files in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
388 '') exit 0;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
389 esac;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
390 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
391 set x $files |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
392 shift |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
393 IFS=$oldIFS;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
394 esac;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
395 esac |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
396 |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
397 case $datearg in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
398 ?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogfile;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
399 '') $rlog $rlog_options ${1+"$@"} >$rlogfile;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
400 esac || exit;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
401 esac |
| 527 | 402 |
| 403 | |
|
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
404 # 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
|
405 # support for the traditional-style +M -N options. |
|
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
406 SORT_K_OPTIONS='-k 3,4r -k 5 -k 1' |
|
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
407 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
|
408 |
|
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
409 |
| 527 | 410 # Get the full name of each author the logs mention, and set initialize_fullname |
| 411 # to awk code that initializes the `fullname' awk associative array. | |
| 412 # Warning: foreign authors (i.e. not known in the passwd file) are mishandled; | |
| 413 # you have to fix the resulting output by hand. | |
| 414 | |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
415 initialize_fullname= |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
416 initialize_mailaddr= |
|
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 case $loginFullnameMailaddrs in |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
421 *\"* | *\\*) |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
422 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
|
423 $loginFullnameMailaddrs |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
424 EOF |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
425 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
|
426 esac |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
427 |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
428 oldIFS=$IFS |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
429 IFS=$nl |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
430 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
|
431 do |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
432 IFS=$tab |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
433 set x $loginFullnameMailaddr |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
434 login=$2 |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
435 fullname=$3 |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
436 mailaddr=$4 |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
437 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
|
438 fullname[\"$login\"] = \"$fullname\"" |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
439 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
|
440 mailaddr[\"$login\"] = \"$mailaddr\"" |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
441 done |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
442 IFS=$oldIFS;; |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
443 esac |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
444 |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
445 case $logins in |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
446 ?*) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
447 sort -u -o $llogout <<EOF |
| 4783 | 448 $logins |
| 449 EOF | |
|
39150
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 '') |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
452 : ;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
453 esac >$llogout || exit |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
454 |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
455 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
|
456 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
|
457 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
|
458 } |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
459 }' |
| 527 | 460 authors=` |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
461 $AWK "$output_authors" <"$rlogfile" | sort -u | comm -23 - $llogout |
| 527 | 462 ` |
|
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
463 case $authors in |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
464 ?*) |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
465 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
|
466 $authors |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
467 EOF |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
468 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
|
469 initialize_author=`sed -e "$initialize_author_script" <$llogout` |
|
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
470 awkscript=' |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
471 BEGIN { |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
472 alphabet = "abcdefghijklmnopqrstuvwxyz" |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
473 ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
474 '"$initialize_author"' |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
475 } |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
476 { |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
477 if (author[$1]) { |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
478 fullname = $5 |
|
4504
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
479 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
|
480 # 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
|
481 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
|
482 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
|
483 } |
|
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
484 if (fullname ~ /,[^ ]/) { |
|
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
485 # 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
|
486 # 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
|
487 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
|
488 } |
|
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
489 abbr = index(fullname, "&") |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
490 if (abbr) { |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
491 a = substr($1, 1, 1) |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
492 A = a |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
493 i = index(alphabet, a) |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
494 if (i) A = substr(ALPHABET, i, 1) |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
495 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
|
496 } |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
497 |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
498 # 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
|
499 # 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
|
500 quoted = "" |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
501 rest = fullname |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
502 for (;;) { |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
503 p = index(rest, "\\") |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
504 q = index(rest, "\"") |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
505 if (p) { |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
506 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
|
507 } else { |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
508 if (!q) break |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
509 p = q |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
510 } |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
511 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
|
512 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
|
513 } |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
514 |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
515 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
|
516 author[$1] = 0 |
|
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 ' |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
520 |
|
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
521 initialize_fullname=` |
|
22999
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 (getent passwd $authors) || |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
524 ( |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
525 cat /etc/passwd |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
526 for author in $authors |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
527 do NIS_PATH= nismatch $author passwd.org_dir |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
528 done |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
529 ypmatch $authors passwd |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
530 ) |
|
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
531 } 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
|
532 $AWK -F: "$awkscript" |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
533 `$initialize_fullname;; |
|
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
534 esac |
| 527 | 535 |
| 536 | |
| 537 # Function to print a single log line. | |
| 538 # 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
|
539 # `Log' is the log message. |
| 594 | 540 # `files' contains the affected files. |
| 527 | 541 printlogline='{ |
| 542 | |
| 543 # Following the GNU coding standards, rewrite | |
| 544 # * file: (function): comment | |
| 545 # to | |
| 546 # * file (function): comment | |
|
41649
41d73d9565de
(Copyright): Add '(C)' as per coding guidelines.
Paul Eggert <eggert@twinsun.com>
parents:
39150
diff
changeset
|
547 if (Log ~ /^\([^)]*\):[\t\n ]/) { |
| 527 | 548 i = index(Log, ")") |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
549 filefunc = substr(Log, 1, i) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
550 while ((j = index(filefunc, "\n"))) { |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
551 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
|
552 filefunc = substr(filefunc, j+1) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
553 } |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
554 files = files " " filefunc |
| 527 | 555 Log = substr(Log, i+3) |
| 556 } | |
| 557 | |
| 558 # If "label: comment" is too long, break the line after the ":". | |
| 559 sep = " " | |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
560 i = index(Log, "\n") |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
561 if ('"$length"' <= '"$indent"' + 1 + length(files) + i) sep = "\n" indent_string |
| 527 | 562 |
| 563 # Print the label. | |
| 534 | 564 printf "%s*%s:", indent_string, files |
| 527 | 565 |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
566 # Print each line of the log. |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
567 while (i) { |
|
4858
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
568 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
|
569 if (logline ~ /[^'"$tab"' ]/) { |
|
4858
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
570 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
|
571 } else { |
|
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
572 print "" |
|
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
573 } |
| 534 | 574 sep = indent_string |
| 527 | 575 Log = substr(Log, i+1) |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
576 i = index(Log, "\n") |
| 527 | 577 } |
| 578 }' | |
| 579 | |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
580 # 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
|
581 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
|
582 |
| 4783 | 583 case $hostname in |
| 584 '') | |
| 585 hostname=`( | |
| 586 hostname || uname -n || uuname -l || cat /etc/whoami | |
| 587 ) 2>/dev/null` || { | |
| 588 echo >&2 "$0: cannot deduce hostname" | |
| 589 exit 1 | |
| 590 } | |
|
14173
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 case $hostname in |
|
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
593 *.*) ;; |
|
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
594 *) |
|
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
595 domainname=`(domainname) 2>/dev/null` && |
|
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
596 case $domainname in |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
597 *.*) hostname=$hostname.$domainname;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
598 esac;; |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
599 esac;; |
| 4783 | 600 esac |
| 527 | 601 |
| 602 | |
| 603 # Process the rlog output, generating ChangeLog style entries. | |
| 604 | |
| 605 # 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
|
606 # Transliterate \n to SOH so that multiline entries fit on a single line. |
| 527 | 607 # Discard irrelevant rlog output. |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
608 $AWK ' |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
609 BEGIN { |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
610 pository = "'"$pository"'" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
611 SOH="'"$SOH"'" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
612 } |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
613 /^RCS file: / { |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
614 if (pository != "") { |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
615 filename = substr($0, 11) |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
616 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
|
617 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
|
618 } |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
619 if (filename ~ /,v$/) { |
|
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
620 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
|
621 } |
|
16507
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
622 if (filename ~ /(^|\/)Attic\/[^\/]*$/) { |
|
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
623 i = length(filename) |
|
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
624 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
|
625 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
|
626 } |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
627 } |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
628 rev = "?" |
|
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
629 } |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
630 /^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
|
631 /'"$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
|
632 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
|
633 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
|
634 rev = $2 |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
635 next |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
636 } |
|
18452
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
637 if (line ~ /^date: [0-9][- +\/0-9:]*;/) { |
| 8549 | 638 date = $2 |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
639 if (date ~ /\//) { |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
640 # 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
|
641 # Replace "/"s with "-"s to get ISO format. |
| 8549 | 642 newdate = "" |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
643 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
|
644 newdate = newdate substr(date, 1, i-1) "-" |
| 8549 | 645 date = substr(date, i+1) |
| 646 } | |
| 647 date = newdate date | |
| 648 } | |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
649 time = substr($3, 1, length($3) - 1) |
| 527 | 650 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
|
651 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
|
652 rev = "?" |
| 527 | 653 next |
| 654 } | |
|
18452
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 ~ /^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
|
656 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
|
657 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
|
658 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
|
659 } |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
660 printf "%s%s", line, SOH |
| 527 | 661 } |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
662 ' <"$rlogfile" | |
| 527 | 663 |
| 664 # 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
|
665 # 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
|
666 # 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
|
667 # 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
|
668 # 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
|
669 # 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
|
670 # (just in case). |
|
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
671 sort -t"$SOH" $SORT_K_OPTIONS | |
| 527 | 672 |
| 673 # 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
|
674 $AWK -F"$SOH" ' |
| 527 | 675 BEGIN { |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
676 logTZ = "'"$logTZ"'" |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
677 revision = "'"$revision"'" |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
678 |
| 4783 | 679 # Initialize the fullname and mailaddr associative arrays. |
| 527 | 680 '"$initialize_fullname"' |
| 4783 | 681 '"$initialize_mailaddr"' |
| 527 | 682 |
| 534 | 683 # Initialize indent string. |
| 684 indent_string = "" | |
| 685 i = '"$indent"' | |
| 686 if (0 < '"$tabwidth"') | |
| 687 for (; '"$tabwidth"' <= i; i -= '"$tabwidth"') | |
| 688 indent_string = indent_string "\t" | |
| 689 while (1 <= i--) | |
| 690 indent_string = indent_string " " | |
| 527 | 691 } |
|
636
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
692 |
| 527 | 693 { |
|
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
694 newlog = "" |
|
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
695 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
|
696 |
|
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
697 # Ignore log entries prefixed by "#". |
|
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
698 if (newlog ~ /^#/) { next } |
|
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
699 |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
700 if (Log != newlog || date != $3 || author != $5) { |
| 594 | 701 |
| 527 | 702 # The previous log and this log differ. |
| 594 | 703 |
| 704 # Print the old log. | |
| 527 | 705 if (date != "") '"$printlogline"' |
| 706 | |
| 594 | 707 # Logs that begin with "{clumpname} " should be grouped together, |
| 708 # and the clumpname should be removed. | |
| 709 # Extract the new clumpname from the log header, | |
| 710 # and use it to decide whether to output a blank line. | |
| 711 newclumpname = "" | |
| 712 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
|
713 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
|
714 if (newlog ~ /^\{[^'"$tab"' }]*}['"$tab"' ]/) { |
| 594 | 715 i = index(newlog, "}") |
| 716 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
|
717 while (substr(newlog, i+1) ~ /^['"$tab"' ]/) i++ |
| 594 | 718 newlog = substr(newlog, i+1) |
|
41649
41d73d9565de
(Copyright): Add '(C)' as per coding guidelines.
Paul Eggert <eggert@twinsun.com>
parents:
39150
diff
changeset
|
719 if (clumpname == newclumpname && date == $3 && author == $5) sep = "" |
| 594 | 720 } |
| 721 printf sep | |
| 722 clumpname = newclumpname | |
| 723 | |
| 527 | 724 # Get ready for the next log. |
| 725 Log = newlog | |
| 534 | 726 if (files != "") |
| 727 for (i in filesknown) | |
| 728 filesknown[i] = 0 | |
| 527 | 729 files = "" |
| 730 } | |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
731 if (date != $3 || author != $5) { |
| 527 | 732 # The previous date+author and this date+author differ. |
| 733 # 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
|
734 date = $3 |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
735 time = $4 |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
736 author = $5 |
| 527 | 737 |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
738 zone = "" |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
739 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
|
740 zone = " " substr(time, i) |
| 527 | 741 |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
742 # Print "date[ timezone] fullname <email address>". |
| 4783 | 743 # Get fullname and email address from associative arrays; |
| 744 # default to author and author@hostname if not in arrays. | |
| 534 | 745 if (fullname[author]) |
| 4783 | 746 auth = fullname[author] |
| 534 | 747 else |
| 4783 | 748 auth = author |
|
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
749 printf "%s%s %s ", date, zone, auth |
| 4783 | 750 if (mailaddr[author]) |
|
8496
2dba6eb73c65
Use <> to delimit email address.
Richard M. Stallman <rms@gnu.org>
parents:
4858
diff
changeset
|
751 printf "<%s>\n\n", mailaddr[author] |
| 4783 | 752 else |
|
8496
2dba6eb73c65
Use <> to delimit email address.
Richard M. Stallman <rms@gnu.org>
parents:
4858
diff
changeset
|
753 printf "<%s@%s>\n\n", author, "'"$hostname"'" |
| 527 | 754 } |
| 534 | 755 if (! filesknown[$1]) { |
| 756 filesknown[$1] = 1 | |
| 594 | 757 if (files == "") files = " " $1 |
| 758 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
|
759 if (revision && $2 != "?") files = files " " $2 |
| 534 | 760 } |
| 527 | 761 } |
| 762 END { | |
| 763 # Print the last log. | |
| 594 | 764 if (date != "") { |
| 765 '"$printlogline"' | |
| 766 printf "\n" | |
| 767 } | |
| 527 | 768 } |
| 769 ' && | |
| 770 | |
| 771 | |
| 772 # Exit successfully. | |
| 773 | |
|
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
774 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
|
775 |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
776 # Local Variables: |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
777 # tab-width:4 |
|
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
778 # End: |
| 52401 | 779 |
| 780 # arch-tag: cea067bd-a552-4254-ba17-078208933073 |
