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