Mercurial > emacs
annotate lib-src/rcs2log @ 83037:03a73693678e
Merged in changes from CVS HEAD
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-71
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-72
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-73
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-74
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-75
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-76
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-77
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-78
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-79
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-80
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-81
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-82
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-83
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-84
Add lisp/emacs-lisp/macroexp.el
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-85
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-86
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-87
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-88
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-89
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-90
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-91
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-92
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-93
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-94
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-95
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-96
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-97
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-77
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Tue, 17 Feb 2004 01:52:25 +0000 |
parents | 09ea561dfa8c 8f3f4ab62a69 |
children | eb7e8d483840 |
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 |
83037 | 32 Id='$Id: rcs2log,v 1.53 2004/02/15 07:41:58 uid65632 Exp $' |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
33 |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
34 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
35 # 2004 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 |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
52 Copyright='Copyright (C) 2004 Free Software Foundation, Inc. |
16899
04ad9edd12b3
--help, --version: New options, for conformance to GNU coding standards.
Paul Eggert <eggert@twinsun.com>
parents:
16507
diff
changeset
|
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. |
53317
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
198 # Since ChangeLog is only by date, some of these revisions may be |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
199 # duplicates of what's already in ChangeLog; it's the user's |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
200 # responsibility to remove them. |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
201 case $rlog_options in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
202 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
203 if test -s "$changelog" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
204 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
205 e=' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
206 /^[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
|
207 # ISO 8601 date |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
208 print $1 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
209 exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
210 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
211 /^... ... [ 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
|
212 # 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
|
213 '"$month_data"' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
214 year = $5 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
215 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
|
216 dd = $3 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
217 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
|
218 exit |
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 ' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
221 d=`$AWK "$e" <"$changelog"` || exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
222 case $d in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
223 ?*) datearg="-d>$d";; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
224 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
225 fi;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
226 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
227 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
228 # 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
|
229 if test -s "$changelog" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
230 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
231 extractTZ=' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
232 /^.*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
|
233 s//\1/; p; q |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
234 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
235 /^.*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
|
236 s//UTC0/; p; q |
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 ' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
239 logTZ=`tail "$changelog" | sed -n "$extractTZ"` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
240 case $logTZ in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
241 ?*) TZ=$logTZ; export TZ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
242 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
243 fi |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
244 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
245 # 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
|
246 if test ! -f CVS/Repository |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
247 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
248 rlog=rlog |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
249 repository= |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
250 else |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
251 rlog='cvs -q log' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
252 repository=`sed 1q <CVS/Repository` || exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
253 test ! -f CVS/Root || CVSROOT=`cat <CVS/Root` || exit |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
254 pository= |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
255 case $CVSROOT in |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
256 /* | :fork:* | :local:*) ;; |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
257 */*) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
258 # remote repository |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
259 pository=`expr "X$CVSROOT" : '[^/]*\(.*\)'`;; |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
260 esac |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
261 case $pository in |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
262 '') |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
263 # local repository |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
264 case $repository in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
265 /*) ;; |
53947
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
266 *) |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
267 repository=${CVSROOT?}/$repository |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
268 case $repository in |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
269 :fork:* | :local:*) |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
270 repository=`expr "$repository" : ':[^:]*:\(.*\)'`;; |
8f3f4ab62a69
Work correctly if CVSROOT specifies :fork: or
Paul Eggert <eggert@twinsun.com>
parents:
53317
diff
changeset
|
271 esac;; |
39150
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 if test ! -d "$repository" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
274 then |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
275 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
|
276 exit 1 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
277 fi |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
278 pository=$repository;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
279 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
280 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
281 # 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
|
282 while : |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
283 do |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
284 case $pository in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
285 *//) pository=`expr "X$pository" : 'X\(.*\)/'`;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
286 */) break;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
287 *) pository=$pository/; break;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
288 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
289 done |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
290 |
53317
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
291 # If no rlog options are given, and if we are in a tagged CVS branch, |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
292 # log only the changes in that branch. |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
293 case $rlog_options in |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
294 '') |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
295 if test -f CVS/Tag |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
296 then |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
297 CVSTAG=`cat <CVS/Tag` || exit |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
298 case $CVSTAG in |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
299 T?*) |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
300 rlog_options=-r`expr "$CVSTAG" : 'T\(.*\)'`;; |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
301 *) |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
302 echo >&2 "$0: invalid CVS/Tag"; exit 1;; |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
303 esac |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
304 fi;; |
2ca480ce7e51
(rlog_options): Append -rbranchtag if CVS/Tag indicates
Paul Eggert <eggert@twinsun.com>
parents:
52401
diff
changeset
|
305 esac |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
306 fi |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
307 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
308 # 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
|
309 case `$rlog -zLT 2>&1` in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
310 *' option'*) ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
311 *) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
312 case $rlog_options in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
313 '') rlog_options=-zLT;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
314 ?*) rlog_options=-zLT$nl$rlog_options;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
315 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
316 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
317 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
318 # 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
|
319 case $# in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
320 0) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
321 case $repository in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
322 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
323 oldIFS=$IFS |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
324 IFS=$nl |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
325 case $recursive in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
326 t) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
327 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
|
328 filesFromRCSfiles='s|,v$||; s|/RCS/|/|; s|^\./||' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
329 files=` |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
330 { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
331 case $RCSdirs in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
332 ?*) find $RCSdirs \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
333 -type f \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
334 ! -name '*_' \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
335 ! -name ',*,' \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
336 ! -name '.*_' \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
337 ! -name .rcsfreeze.log \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
338 ! -name .rcsfreeze.ver \ |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
339 -print;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
340 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
341 find . -name '*,v' -print |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
342 } | |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
343 sort -u | |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
344 sed "$filesFromRCSfiles" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
345 `;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
346 *) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
347 files= |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
348 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
|
349 do |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
350 case $file in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
351 RCS/. | RCS/.. | RCS/,*, | RCS/*_) continue;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
352 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
|
353 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
|
354 RCS/*,v | RCS/.*,v) ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
355 RCS/* | RCS/.*) test -f "$file" || continue;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
356 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
357 case $files in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
358 '') files=$file;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
359 ?*) files=$files$nl$file;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
360 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
361 done |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
362 case $files in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
363 '') exit 0;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
364 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
365 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
366 set x $files |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
367 shift |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
368 IFS=$oldIFS;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
369 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
370 esac |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
371 |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
372 case $datearg in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
373 ?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogfile;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
374 '') $rlog $rlog_options ${1+"$@"} >$rlogfile;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
375 esac || exit;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
376 esac |
527 | 377 |
378 | |
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
379 # 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
|
380 # support for the traditional-style +M -N options. |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
381 SORT_K_OPTIONS='-k 3,4r -k 5 -k 1' |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
382 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
|
383 |
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
384 |
527 | 385 # Get the full name of each author the logs mention, and set initialize_fullname |
386 # to awk code that initializes the `fullname' awk associative array. | |
387 # Warning: foreign authors (i.e. not known in the passwd file) are mishandled; | |
388 # you have to fix the resulting output by hand. | |
389 | |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
390 initialize_fullname= |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
391 initialize_mailaddr= |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
392 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
393 case $loginFullnameMailaddrs in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
394 ?*) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
395 case $loginFullnameMailaddrs in |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
396 *\"* | *\\*) |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
397 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
|
398 $loginFullnameMailaddrs |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
399 EOF |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
400 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
|
401 esac |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
402 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
403 oldIFS=$IFS |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
404 IFS=$nl |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
405 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
|
406 do |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
407 IFS=$tab |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
408 set x $loginFullnameMailaddr |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
409 login=$2 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
410 fullname=$3 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
411 mailaddr=$4 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
412 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
|
413 fullname[\"$login\"] = \"$fullname\"" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
414 initialize_mailaddr="$initialize_mailaddr |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
415 mailaddr[\"$login\"] = \"$mailaddr\"" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
416 done |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
417 IFS=$oldIFS;; |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
418 esac |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
419 |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
420 case $logins in |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
421 ?*) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
422 sort -u -o $llogout <<EOF |
4783 | 423 $logins |
424 EOF | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
425 ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
426 '') |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
427 : ;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
428 esac >$llogout || exit |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
429 |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
430 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
|
431 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
|
432 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
|
433 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
434 }' |
527 | 435 authors=` |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
436 $AWK "$output_authors" <"$rlogfile" | sort -u | comm -23 - $llogout |
527 | 437 ` |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
438 case $authors in |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
439 ?*) |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
440 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
|
441 $authors |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
442 EOF |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
443 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
|
444 initialize_author=`sed -e "$initialize_author_script" <$llogout` |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
445 awkscript=' |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
446 BEGIN { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
447 alphabet = "abcdefghijklmnopqrstuvwxyz" |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
448 ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
449 '"$initialize_author"' |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
450 } |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
451 { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
452 if (author[$1]) { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
453 fullname = $5 |
4504
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
454 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
|
455 # 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
|
456 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
|
457 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
|
458 } |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
459 if (fullname ~ /,[^ ]/) { |
65ef94a9e2c4
(awkscript): Some sites put comma-separated junk after the fullname.
Paul Eggert <eggert@twinsun.com>
parents:
3248
diff
changeset
|
460 # 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
|
461 # 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
|
462 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
|
463 } |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
464 abbr = index(fullname, "&") |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
465 if (abbr) { |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
466 a = substr($1, 1, 1) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
467 A = a |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
468 i = index(alphabet, a) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
469 if (i) A = substr(ALPHABET, i, 1) |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
470 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
|
471 } |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
472 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
473 # 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
|
474 # 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
|
475 quoted = "" |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
476 rest = fullname |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
477 for (;;) { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
478 p = index(rest, "\\") |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
479 q = index(rest, "\"") |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
480 if (p) { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
481 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
|
482 } else { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
483 if (!q) break |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
484 p = q |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
485 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
486 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
|
487 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
|
488 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
489 |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
490 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
|
491 author[$1] = 0 |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
492 } |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
493 } |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
494 ' |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
495 |
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
496 initialize_fullname=` |
22999
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
497 { |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
498 (getent passwd $authors) || |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
499 ( |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
500 cat /etc/passwd |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
501 for author in $authors |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
502 do NIS_PATH= nismatch $author passwd.org_dir |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
503 done |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
504 ypmatch $authors passwd |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
505 ) |
5ec968f5560c
(initialize_fullname): Prefer getent if available.
Paul Eggert <eggert@twinsun.com>
parents:
18452
diff
changeset
|
506 } 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
|
507 $AWK -F: "$awkscript" |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
508 `$initialize_fullname;; |
640
36e7f4e402bd
Call ypmatch at most once.
Paul Eggert <eggert@twinsun.com>
parents:
636
diff
changeset
|
509 esac |
527 | 510 |
511 | |
512 # Function to print a single log line. | |
513 # 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
|
514 # `Log' is the log message. |
594 | 515 # `files' contains the affected files. |
527 | 516 printlogline='{ |
517 | |
518 # Following the GNU coding standards, rewrite | |
519 # * file: (function): comment | |
520 # to | |
521 # * file (function): comment | |
41649
41d73d9565de
(Copyright): Add '(C)' as per coding guidelines.
Paul Eggert <eggert@twinsun.com>
parents:
39150
diff
changeset
|
522 if (Log ~ /^\([^)]*\):[\t\n ]/) { |
527 | 523 i = index(Log, ")") |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
524 filefunc = substr(Log, 1, i) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
525 while ((j = index(filefunc, "\n"))) { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
526 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
|
527 filefunc = substr(filefunc, j+1) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
528 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
529 files = files " " filefunc |
527 | 530 Log = substr(Log, i+3) |
531 } | |
532 | |
533 # If "label: comment" is too long, break the line after the ":". | |
534 sep = " " | |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
535 i = index(Log, "\n") |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
536 if ('"$length"' <= '"$indent"' + 1 + length(files) + i) sep = "\n" indent_string |
527 | 537 |
538 # Print the label. | |
534 | 539 printf "%s*%s:", indent_string, files |
527 | 540 |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
541 # Print each line of the log. |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
542 while (i) { |
4858
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
543 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
|
544 if (logline ~ /[^'"$tab"' ]/) { |
4858
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
545 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
|
546 } else { |
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
547 print "" |
5b4f9564bfaf
(printlogline): Don't generate lines containing only white space.
Paul Eggert <eggert@twinsun.com>
parents:
4783
diff
changeset
|
548 } |
534 | 549 sep = indent_string |
527 | 550 Log = substr(Log, i+1) |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
551 i = index(Log, "\n") |
527 | 552 } |
553 }' | |
554 | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
555 # 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
|
556 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
|
557 |
4783 | 558 case $hostname in |
559 '') | |
560 hostname=`( | |
561 hostname || uname -n || uuname -l || cat /etc/whoami | |
562 ) 2>/dev/null` || { | |
563 echo >&2 "$0: cannot deduce hostname" | |
564 exit 1 | |
565 } | |
14173
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
566 |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
567 case $hostname in |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
568 *.*) ;; |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
569 *) |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
570 domainname=`(domainname) 2>/dev/null` && |
940083ef25b9
(initialize_fullname): Add support for NIS+.
Paul Eggert <eggert@twinsun.com>
parents:
12509
diff
changeset
|
571 case $domainname in |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
572 *.*) hostname=$hostname.$domainname;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
573 esac;; |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
574 esac;; |
4783 | 575 esac |
527 | 576 |
577 | |
578 # Process the rlog output, generating ChangeLog style entries. | |
579 | |
580 # 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
|
581 # Transliterate \n to SOH so that multiline entries fit on a single line. |
527 | 582 # Discard irrelevant rlog output. |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
583 $AWK ' |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
584 BEGIN { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
585 pository = "'"$pository"'" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
586 SOH="'"$SOH"'" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
587 } |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
588 /^RCS file: / { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
589 if (pository != "") { |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
590 filename = substr($0, 11) |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
591 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
|
592 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
|
593 } |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
594 if (filename ~ /,v$/) { |
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
595 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
|
596 } |
16507
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
597 if (filename ~ /(^|\/)Attic\/[^\/]*$/) { |
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
598 i = length(filename) |
08855b88e955
When processing cvs log output, remove `Attic/' from repository file names.
Paul Eggert <eggert@twinsun.com>
parents:
16438
diff
changeset
|
599 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
|
600 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
|
601 } |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
602 } |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
603 rev = "?" |
11073
554c86f77db0
Add -u "login<tab>fullname<tab>mailaddr" option, which replaces the
Paul Eggert <eggert@twinsun.com>
parents:
8549
diff
changeset
|
604 } |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
605 /^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
|
606 /'"$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
|
607 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
|
608 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
|
609 rev = $2 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
610 next |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
611 } |
18452
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
612 if (line ~ /^date: [0-9][- +\/0-9:]*;/) { |
8549 | 613 date = $2 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
614 if (date ~ /\//) { |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
615 # 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
|
616 # Replace "/"s with "-"s to get ISO format. |
8549 | 617 newdate = "" |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
618 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
|
619 newdate = newdate substr(date, 1, i-1) "-" |
8549 | 620 date = substr(date, i+1) |
621 } | |
622 date = newdate date | |
623 } | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
624 time = substr($3, 1, length($3) - 1) |
527 | 625 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
|
626 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
|
627 rev = "?" |
527 | 628 next |
629 } | |
18452
44e598b69b42
Don't assign to $0 in awk; some awks don't allow this.
Paul Eggert <eggert@twinsun.com>
parents:
17791
diff
changeset
|
630 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
|
631 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
|
632 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
|
633 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
|
634 } |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
635 printf "%s%s", line, SOH |
527 | 636 } |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
637 ' <"$rlogfile" | |
527 | 638 |
639 # 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
|
640 # 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
|
641 # 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
|
642 # 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
|
643 # 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
|
644 # 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
|
645 # (just in case). |
43097
c421297164e2
(Copyright): Update to 2002.
Paul Eggert <eggert@twinsun.com>
parents:
41649
diff
changeset
|
646 sort -t"$SOH" $SORT_K_OPTIONS | |
527 | 647 |
648 # 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
|
649 $AWK -F"$SOH" ' |
527 | 650 BEGIN { |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
651 logTZ = "'"$logTZ"'" |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
652 revision = "'"$revision"'" |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
653 |
4783 | 654 # Initialize the fullname and mailaddr associative arrays. |
527 | 655 '"$initialize_fullname"' |
4783 | 656 '"$initialize_mailaddr"' |
527 | 657 |
534 | 658 # Initialize indent string. |
659 indent_string = "" | |
660 i = '"$indent"' | |
661 if (0 < '"$tabwidth"') | |
662 for (; '"$tabwidth"' <= i; i -= '"$tabwidth"') | |
663 indent_string = indent_string "\t" | |
664 while (1 <= i--) | |
665 indent_string = indent_string " " | |
527 | 666 } |
636
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
667 |
527 | 668 { |
39150
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
669 newlog = "" |
a56fcade3c7e
(Help, mainline code): Add new option -L FILE.
Paul Eggert <eggert@twinsun.com>
parents:
38496
diff
changeset
|
670 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
|
671 |
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
672 # Ignore log entries prefixed by "#". |
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
673 if (newlog ~ /^#/) { next } |
dce8cdbac0ea
Ignore log messages that start with `#'.
Paul Eggert <eggert@twinsun.com>
parents:
602
diff
changeset
|
674 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
675 if (Log != newlog || date != $3 || author != $5) { |
594 | 676 |
527 | 677 # The previous log and this log differ. |
594 | 678 |
679 # Print the old log. | |
527 | 680 if (date != "") '"$printlogline"' |
681 | |
594 | 682 # Logs that begin with "{clumpname} " should be grouped together, |
683 # and the clumpname should be removed. | |
684 # Extract the new clumpname from the log header, | |
685 # and use it to decide whether to output a blank line. | |
686 newclumpname = "" | |
687 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
|
688 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
|
689 if (newlog ~ /^\{[^'"$tab"' }]*}['"$tab"' ]/) { |
594 | 690 i = index(newlog, "}") |
691 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
|
692 while (substr(newlog, i+1) ~ /^['"$tab"' ]/) i++ |
594 | 693 newlog = substr(newlog, i+1) |
41649
41d73d9565de
(Copyright): Add '(C)' as per coding guidelines.
Paul Eggert <eggert@twinsun.com>
parents:
39150
diff
changeset
|
694 if (clumpname == newclumpname && date == $3 && author == $5) sep = "" |
594 | 695 } |
696 printf sep | |
697 clumpname = newclumpname | |
698 | |
527 | 699 # Get ready for the next log. |
700 Log = newlog | |
534 | 701 if (files != "") |
702 for (i in filesknown) | |
703 filesknown[i] = 0 | |
527 | 704 files = "" |
705 } | |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
706 if (date != $3 || author != $5) { |
527 | 707 # The previous date+author and this date+author differ. |
708 # 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
|
709 date = $3 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
710 time = $4 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
711 author = $5 |
527 | 712 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
713 zone = "" |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
714 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
|
715 zone = " " substr(time, i) |
527 | 716 |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
717 # Print "date[ timezone] fullname <email address>". |
4783 | 718 # Get fullname and email address from associative arrays; |
719 # default to author and author@hostname if not in arrays. | |
534 | 720 if (fullname[author]) |
4783 | 721 auth = fullname[author] |
534 | 722 else |
4783 | 723 auth = author |
15911
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
724 printf "%s%s %s ", date, zone, auth |
4783 | 725 if (mailaddr[author]) |
8496
2dba6eb73c65
Use <> to delimit email address.
Richard M. Stallman <rms@gnu.org>
parents:
4858
diff
changeset
|
726 printf "<%s>\n\n", mailaddr[author] |
4783 | 727 else |
8496
2dba6eb73c65
Use <> to delimit email address.
Richard M. Stallman <rms@gnu.org>
parents:
4858
diff
changeset
|
728 printf "<%s@%s>\n\n", author, "'"$hostname"'" |
527 | 729 } |
534 | 730 if (! filesknown[$1]) { |
731 filesknown[$1] = 1 | |
594 | 732 if (files == "") files = " " $1 |
733 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
|
734 if (revision && $2 != "?") files = files " " $2 |
534 | 735 } |
527 | 736 } |
737 END { | |
738 # Print the last log. | |
594 | 739 if (date != "") { |
740 '"$printlogline"' | |
741 printf "\n" | |
742 } | |
527 | 743 } |
744 ' && | |
745 | |
746 | |
747 # Exit successfully. | |
748 | |
35016
731a7aca9458
Avoid security hole allowing attacker to
Gerd Moellmann <gerd@gnu.org>
parents:
23008
diff
changeset
|
749 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
|
750 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
751 # Local Variables: |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
752 # tab-width:4 |
c9a152ad9c5a
Use ISO 8601 date format, with time zone appended if
Erik Naggum <erik@naggum.no>
parents:
15742
diff
changeset
|
753 # End: |
52401 | 754 |
755 # arch-tag: cea067bd-a552-4254-ba17-078208933073 |