Teach rcs about the new cvs "commitid" keyword, so that we don't bitch each time we play with an RCS file maintained by CVS.diff -r1.12 -r1.13 src/gnu/usr.bin/rcs/lib/rcsbase.h
(christos)
--- src/gnu/usr.bin/rcs/lib/Attic/rcsbase.h 2012/01/12 14:10:56 1.12
+++ src/gnu/usr.bin/rcs/lib/Attic/rcsbase.h 2012/03/08 21:32:28 1.13
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: rcsbase.h,v 1.12 2012/01/12 14:10:56 joerg Exp $ */ | 1 | /* $NetBSD: rcsbase.h,v 1.13 2012/03/08 21:32:28 christos Exp $ */ | |
2 | 2 | |||
3 | /* RCS common definitions and data structures */ | 3 | /* RCS common definitions and data structures */ | |
4 | 4 | |||
5 | #define RCSBASE "Id: rcsbase.h,v 5.20 1995/06/16 06:19:24 eggert Exp" | 5 | #define RCSBASE "Id: rcsbase.h,v 5.20 1995/06/16 06:19:24 eggert Exp" | |
6 | 6 | |||
7 | /* Copyright 1982, 1988, 1989 Walter Tichy | 7 | /* Copyright 1982, 1988, 1989 Walter Tichy | |
8 | Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert | 8 | Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert | |
9 | Distributed under license by the Free Software Foundation, Inc. | 9 | Distributed under license by the Free Software Foundation, Inc. | |
10 | 10 | |||
11 | This file is part of RCS. | 11 | This file is part of RCS. | |
12 | 12 | |||
13 | RCS is free software; you can redistribute it and/or modify | 13 | RCS is free software; you can redistribute it and/or modify | |
14 | it under the terms of the GNU General Public License as published by | 14 | it under the terms of the GNU General Public License as published by | |
@@ -23,26 +23,30 @@ GNU General Public License for more deta | @@ -23,26 +23,30 @@ GNU General Public License for more deta | |||
23 | You should have received a copy of the GNU General Public License | 23 | You should have received a copy of the GNU General Public License | |
24 | along with RCS; see the file COPYING. | 24 | along with RCS; see the file COPYING. | |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, | |
26 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 26 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
27 | 27 | |||
28 | Report problems and direct all questions to: | 28 | Report problems and direct all questions to: | |
29 | 29 | |||
30 | rcs-bugs@cs.purdue.edu | 30 | rcs-bugs@cs.purdue.edu | |
31 | 31 | |||
32 | */ | 32 | */ | |
33 | 33 | |||
34 | /* | 34 | /* | |
35 | * $Log: rcsbase.h,v $ | 35 | * $Log: rcsbase.h,v $ | |
36 | * Revision 1.13 2012/03/08 21:32:28 christos | |||
37 | * Teach rcs about the new cvs "commitid" keyword, so that we don't bitch each | |||
38 | * time we play with an RCS file maintained by CVS. | |||
39 | * | |||
36 | * Revision 1.12 2012/01/12 14:10:56 joerg | 40 | * Revision 1.12 2012/01/12 14:10:56 joerg | |
37 | * Second try to sort out the dangling elses. Just use {} markers. | 41 | * Second try to sort out the dangling elses. Just use {} markers. | |
38 | * Produces identical on amd64. | 42 | * Produces identical on amd64. | |
39 | * | 43 | * | |
40 | * Revision 1.11 2012/01/08 13:57:31 tron | 44 | * Revision 1.11 2012/01/08 13:57:31 tron | |
41 | * Revert last change. The extra while loop intruced by the macro changes | 45 | * Revert last change. The extra while loop intruced by the macro changes | |
42 | * causes an end-less loop in ci(1) which uses "break" inside one of the | 46 | * causes an end-less loop in ci(1) which uses "break" inside one of the | |
43 | * macros. | 47 | * macros. | |
44 | * | 48 | * | |
45 | * "/etc/security" will now no longer fill up "/" (or "/var" depending on | 49 | * "/etc/security" will now no longer fill up "/" (or "/var" depending on | |
46 | * file-system layout). | 50 | * file-system layout). | |
47 | * | 51 | * | |
48 | * Revision 1.9 1998/09/14 18:36:07 tv | 52 | * Revision 1.9 1998/09/14 18:36:07 tv | |
@@ -373,26 +377,27 @@ struct buf { | @@ -373,26 +377,27 @@ struct buf { | |||
373 | struct cbuf { | 377 | struct cbuf { | |
374 | char const *string; | 378 | char const *string; | |
375 | size_t size; | 379 | size_t size; | |
376 | }; | 380 | }; | |
377 | 381 | |||
378 | /* Hash table entry */ | 382 | /* Hash table entry */ | |
379 | struct hshentry { | 383 | struct hshentry { | |
380 | char const * num; /* pointer to revision number (ASCIZ) */ | 384 | char const * num; /* pointer to revision number (ASCIZ) */ | |
381 | char const * date; /* pointer to date of checkin */ | 385 | char const * date; /* pointer to date of checkin */ | |
382 | char const * author; /* login of person checking in */ | 386 | char const * author; /* login of person checking in */ | |
383 | char const * lockedby; /* who locks the revision */ | 387 | char const * lockedby; /* who locks the revision */ | |
384 | char const * state; /* state of revision (Exp by default) */ | 388 | char const * state; /* state of revision (Exp by default) */ | |
385 | char const * name; /* name (if any) by which retrieved */ | 389 | char const * name; /* name (if any) by which retrieved */ | |
390 | char const * commitid; /* unique commit identifier */ | |||
386 | struct cbuf log; /* log message requested at checkin */ | 391 | struct cbuf log; /* log message requested at checkin */ | |
387 | struct branchhead * branches; /* list of first revisions on branches*/ | 392 | struct branchhead * branches; /* list of first revisions on branches*/ | |
388 | struct cbuf ig; /* ignored phrases in admin part */ | 393 | struct cbuf ig; /* ignored phrases in admin part */ | |
389 | struct cbuf igtext; /* ignored phrases in deltatext part */ | 394 | struct cbuf igtext; /* ignored phrases in deltatext part */ | |
390 | struct hshentry * next; /* next revision on same branch */ | 395 | struct hshentry * next; /* next revision on same branch */ | |
391 | struct hshentry * nexthsh; /* next revision with same hash value */ | 396 | struct hshentry * nexthsh; /* next revision with same hash value */ | |
392 | long insertlns;/* lines inserted (computed by rlog) */ | 397 | long insertlns;/* lines inserted (computed by rlog) */ | |
393 | long deletelns;/* lines deleted (computed by rlog) */ | 398 | long deletelns;/* lines deleted (computed by rlog) */ | |
394 | char selector; /* true if selected, false if deleted */ | 399 | char selector; /* true if selected, false if deleted */ | |
395 | }; | 400 | }; | |
396 | 401 | |||
397 | /* list of hash entries */ | 402 | /* list of hash entries */ | |
398 | struct hshentries { | 403 | struct hshentries { |
--- src/gnu/usr.bin/rcs/lib/Attic/rcssyn.c 1996/10/15 07:00:26 1.4
+++ src/gnu/usr.bin/rcs/lib/Attic/rcssyn.c 2012/03/08 21:32:28 1.5
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: rcssyn.c,v 1.4 1996/10/15 07:00:26 veego Exp $ */ | 1 | /* $NetBSD: rcssyn.c,v 1.5 2012/03/08 21:32:28 christos Exp $ */ | |
2 | 2 | |||
3 | /* RCS file syntactic analysis */ | 3 | /* RCS file syntactic analysis */ | |
4 | 4 | |||
5 | /****************************************************************************** | 5 | /****************************************************************************** | |
6 | * Syntax Analysis. | 6 | * Syntax Analysis. | |
7 | * Keyword table | 7 | * Keyword table | |
8 | * Testprogram: define SYNTEST | 8 | * Testprogram: define SYNTEST | |
9 | * Compatibility with Release 2: define COMPAT2=1 | 9 | * Compatibility with Release 2: define COMPAT2=1 | |
10 | ****************************************************************************** | 10 | ****************************************************************************** | |
11 | */ | 11 | */ | |
12 | 12 | |||
13 | /* Copyright 1982, 1988, 1989 Walter Tichy | 13 | /* Copyright 1982, 1988, 1989 Walter Tichy | |
14 | Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert | 14 | Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert | |
@@ -29,26 +29,30 @@ GNU General Public License for more deta | @@ -29,26 +29,30 @@ GNU General Public License for more deta | |||
29 | You should have received a copy of the GNU General Public License | 29 | You should have received a copy of the GNU General Public License | |
30 | along with RCS; see the file COPYING. | 30 | along with RCS; see the file COPYING. | |
31 | If not, write to the Free Software Foundation, | 31 | If not, write to the Free Software Foundation, | |
32 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 32 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
33 | 33 | |||
34 | Report problems and direct all questions to: | 34 | Report problems and direct all questions to: | |
35 | 35 | |||
36 | rcs-bugs@cs.purdue.edu | 36 | rcs-bugs@cs.purdue.edu | |
37 | 37 | |||
38 | */ | 38 | */ | |
39 | 39 | |||
40 | /* | 40 | /* | |
41 | * $Log: rcssyn.c,v $ | 41 | * $Log: rcssyn.c,v $ | |
42 | * Revision 1.5 2012/03/08 21:32:28 christos | |||
43 | * Teach rcs about the new cvs "commitid" keyword, so that we don't bitch each | |||
44 | * time we play with an RCS file maintained by CVS. | |||
45 | * | |||
42 | * Revision 1.4 1996/10/15 07:00:26 veego | 46 | * Revision 1.4 1996/10/15 07:00:26 veego | |
43 | * Merge rcs 5.7. | 47 | * Merge rcs 5.7. | |
44 | * | 48 | * | |
45 | * Revision 5.15 1995/06/16 06:19:24 eggert | 49 | * Revision 5.15 1995/06/16 06:19:24 eggert | |
46 | * Update FSF address. | 50 | * Update FSF address. | |
47 | * | 51 | * | |
48 | * Revision 5.14 1995/06/01 16:23:43 eggert | 52 | * Revision 5.14 1995/06/01 16:23:43 eggert | |
49 | * (expand_names): Add "b" for -kb. | 53 | * (expand_names): Add "b" for -kb. | |
50 | * (getdelta): Don't strip leading "19" from MKS RCS dates; see cmpdate. | 54 | * (getdelta): Don't strip leading "19" from MKS RCS dates; see cmpdate. | |
51 | * | 55 | * | |
52 | * Revision 5.13 1994/03/20 04:52:58 eggert | 56 | * Revision 5.13 1994/03/20 04:52:58 eggert | |
53 | * Remove lint. | 57 | * Remove lint. | |
54 | * | 58 | * | |
@@ -166,26 +170,27 @@ static int getdelta P((void)); | @@ -166,26 +170,27 @@ static int getdelta P((void)); | |||
166 | static int strn2expmode P((char const*,size_t)); | 170 | static int strn2expmode P((char const*,size_t)); | |
167 | static struct hshentry *getdnum P((void)); | 171 | static struct hshentry *getdnum P((void)); | |
168 | static void badDiffOutput P((char const*)) exiting; | 172 | static void badDiffOutput P((char const*)) exiting; | |
169 | static void diffLineNumberTooLarge P((char const*)) exiting; | 173 | static void diffLineNumberTooLarge P((char const*)) exiting; | |
170 | static void getsemi P((char const*)); | 174 | static void getsemi P((char const*)); | |
171 | 175 | |||
172 | /* keyword table */ | 176 | /* keyword table */ | |
173 | 177 | |||
174 | char const | 178 | char const | |
175 | Kaccess[] = "access", | 179 | Kaccess[] = "access", | |
176 | Kauthor[] = "author", | 180 | Kauthor[] = "author", | |
177 | Kbranch[] = "branch", | 181 | Kbranch[] = "branch", | |
178 | Kcomment[] = "comment", | 182 | Kcomment[] = "comment", | |
183 | Kcommitid[] = "commitid", | |||
179 | Kdate[] = "date", | 184 | Kdate[] = "date", | |
180 | Kdesc[] = "desc", | 185 | Kdesc[] = "desc", | |
181 | Kexpand[] = "expand", | 186 | Kexpand[] = "expand", | |
182 | Khead[] = "head", | 187 | Khead[] = "head", | |
183 | Klocks[] = "locks", | 188 | Klocks[] = "locks", | |
184 | Klog[] = "log", | 189 | Klog[] = "log", | |
185 | Knext[] = "next", | 190 | Knext[] = "next", | |
186 | Kstate[] = "state", | 191 | Kstate[] = "state", | |
187 | Kstrict[] = "strict", | 192 | Kstrict[] = "strict", | |
188 | Ksymbols[] = "symbols", | 193 | Ksymbols[] = "symbols", | |
189 | Ktext[] = "text"; | 194 | Ktext[] = "text"; | |
190 | 195 | |||
191 | static char const | 196 | static char const | |
@@ -425,26 +430,37 @@ getdelta() | @@ -425,26 +430,37 @@ getdelta() | |||
425 | LastBranch = &Delta->branches; | 430 | LastBranch = &Delta->branches; | |
426 | while ((num = getdnum())) { | 431 | while ((num = getdnum())) { | |
427 | NewBranch = ftalloc(struct branchhead); | 432 | NewBranch = ftalloc(struct branchhead); | |
428 | NewBranch->hsh = num; | 433 | NewBranch->hsh = num; | |
429 | *LastBranch = NewBranch; | 434 | *LastBranch = NewBranch; | |
430 | LastBranch = &NewBranch->nextbranch; | 435 | LastBranch = &NewBranch->nextbranch; | |
431 | } | 436 | } | |
432 | *LastBranch = 0; | 437 | *LastBranch = 0; | |
433 | getsemi(K_branches); | 438 | getsemi(K_branches); | |
434 | 439 | |||
435 | getkey(Knext); | 440 | getkey(Knext); | |
436 | Delta->next = num = getdnum(); | 441 | Delta->next = num = getdnum(); | |
437 | getsemi(Knext); | 442 | getsemi(Knext); | |
443 | if (getkeyopt(Kcommitid)) { | |||
444 | if (nexttok == ID) { | |||
445 | Delta->commitid = NextString; | |||
446 | nextlex(); | |||
447 | } else { | |||
448 | fatserror("missing %s", Kcommitid); | |||
449 | Delta->commitid = NULL; | |||
450 | } | |||
451 | getsemi(Kcommitid); | |||
452 | } else | |||
453 | Delta->commitid = NULL; | |||
438 | Delta->lockedby = 0; | 454 | Delta->lockedby = 0; | |
439 | Delta->log.string = 0; | 455 | Delta->log.string = 0; | |
440 | Delta->selector = true; | 456 | Delta->selector = true; | |
441 | Delta->ig = getphrases(Kdesc); | 457 | Delta->ig = getphrases(Kdesc); | |
442 | TotalDeltas++; | 458 | TotalDeltas++; | |
443 | return (true); | 459 | return (true); | |
444 | } | 460 | } | |
445 | 461 | |||
446 | 462 | |||
447 | void | 463 | void | |
448 | gettree() | 464 | gettree() | |
449 | /* Function: Reads in the delta tree with getdelta(), then | 465 | /* Function: Reads in the delta tree with getdelta(), then | |
450 | * updates the lockedby fields. | 466 | * updates the lockedby fields. |
--- src/gnu/usr.bin/rcs/rlog/Attic/rlog.1 2002/02/08 01:26:52 1.5
+++ src/gnu/usr.bin/rcs/rlog/Attic/rlog.1 2012/03/08 21:32:28 1.6
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | .\" $NetBSD: rlog.1,v 1.5 2002/02/08 01:26:52 ross Exp $ | 1 | .\" $NetBSD: rlog.1,v 1.6 2012/03/08 21:32:28 christos Exp $ | |
2 | .\" | 2 | .\" | |
3 | .de Id | 3 | .de Id | |
4 | .ds Rv \\$3 | 4 | .ds Rv \\$3 | |
5 | .ds Dt \\$4 | 5 | .ds Dt \\$4 | |
6 | .. | 6 | .. | |
7 | .\" Id: rlog.1,v 5.9 1995/06/16 06:19:24 eggert Exp | 7 | .\" Id: rlog.1,v 5.9 1995/06/16 06:19:24 eggert Exp | |
8 | .ds i \&\s-1ISO\s0 | 8 | .ds i \&\s-1ISO\s0 | |
9 | .ds r \&\s-1RCS\s0 | 9 | .ds r \&\s-1RCS\s0 | |
10 | .ds u \&\s-1UTC\s0 | 10 | .ds u \&\s-1UTC\s0 | |
11 | .if n .ds - \%-- | 11 | .if n .ds - \%-- | |
12 | .if t .ds - \(em | 12 | .if t .ds - \(em | |
13 | .TH RLOG 1 \*(Dt GNU | 13 | .TH RLOG 1 \*(Dt GNU | |
14 | .SH NAME | 14 | .SH NAME | |
@@ -38,26 +38,28 @@ prints revision number, author, date/tim | @@ -38,26 +38,28 @@ prints revision number, author, date/tim | |||
38 | lines added/deleted (with respect to the previous revision), | 38 | lines added/deleted (with respect to the previous revision), | |
39 | locker of the revision (if any), and log message. | 39 | locker of the revision (if any), and log message. | |
40 | All times are displayed in Coordinated Universal Time (\*u) by default; | 40 | All times are displayed in Coordinated Universal Time (\*u) by default; | |
41 | this can be overridden with | 41 | this can be overridden with | |
42 | .BR \-z . | 42 | .BR \-z . | |
43 | Without options, | 43 | Without options, | |
44 | .B rlog | 44 | .B rlog | |
45 | prints complete information. | 45 | prints complete information. | |
46 | The options below restrict this output. | 46 | The options below restrict this output. | |
47 | .nr n \w'\f3\-V\fP\f2n\fP'+2n-1/1n | 47 | .nr n \w'\f3\-V\fP\f2n\fP'+2n-1/1n | |
48 | .ds n \nn | 48 | .ds n \nn | |
49 | .if \n(.g .if r an-tag-sep .ds n \w'\f3\-V\fP\f2n\fP'u+\n[an-tag-sep]u | 49 | .if \n(.g .if r an-tag-sep .ds n \w'\f3\-V\fP\f2n\fP'u+\n[an-tag-sep]u | |
50 | .TP \*n | 50 | .TP \*n | |
51 | .B \-c | |||
52 | Print the commitid if available. | |||
51 | .B \-L | 53 | .B \-L | |
52 | Ignore \*r files that have no locks set. | 54 | Ignore \*r files that have no locks set. | |
53 | This is convenient in combination with | 55 | This is convenient in combination with | |
54 | .BR \-h , | 56 | .BR \-h , | |
55 | .BR \-l , | 57 | .BR \-l , | |
56 | and | 58 | and | |
57 | .BR \-R . | 59 | .BR \-R . | |
58 | .TP | 60 | .TP | |
59 | .B \-R | 61 | .B \-R | |
60 | Print only the name of the \*r file. | 62 | Print only the name of the \*r file. | |
61 | This is convenient for translating a | 63 | This is convenient for translating a | |
62 | working pathname into an \*r pathname. | 64 | working pathname into an \*r pathname. | |
63 | .TP | 65 | .TP |
--- src/gnu/usr.bin/rcs/rlog/Attic/rlog.c 2012/01/06 15:16:03 1.6
+++ src/gnu/usr.bin/rcs/rlog/Attic/rlog.c 2012/03/08 21:32:28 1.7
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: rlog.c,v 1.6 2012/01/06 15:16:03 joerg Exp $ */ | 1 | /* $NetBSD: rlog.c,v 1.7 2012/03/08 21:32:28 christos Exp $ */ | |
2 | 2 | |||
3 | /* Print log messages and other information about RCS files. */ | 3 | /* Print log messages and other information about RCS files. */ | |
4 | 4 | |||
5 | /* Copyright 1982, 1988, 1989 Walter Tichy | 5 | /* Copyright 1982, 1988, 1989 Walter Tichy | |
6 | Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert | 6 | Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert | |
7 | Distributed under license by the Free Software Foundation, Inc. | 7 | Distributed under license by the Free Software Foundation, Inc. | |
8 | 8 | |||
9 | This file is part of RCS. | 9 | This file is part of RCS. | |
10 | 10 | |||
11 | RCS is free software; you can redistribute it and/or modify | 11 | RCS is free software; you can redistribute it and/or modify | |
12 | it under the terms of the GNU General Public License as published by | 12 | it under the terms of the GNU General Public License as published by | |
13 | the Free Software Foundation; either version 2, or (at your option) | 13 | the Free Software Foundation; either version 2, or (at your option) | |
14 | any later version. | 14 | any later version. | |
@@ -21,26 +21,30 @@ GNU General Public License for more deta | @@ -21,26 +21,30 @@ GNU General Public License for more deta | |||
21 | You should have received a copy of the GNU General Public License | 21 | You should have received a copy of the GNU General Public License | |
22 | along with RCS; see the file COPYING. | 22 | along with RCS; see the file COPYING. | |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, | |
24 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 24 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
25 | 25 | |||
26 | Report problems and direct all questions to: | 26 | Report problems and direct all questions to: | |
27 | 27 | |||
28 | rcs-bugs@cs.purdue.edu | 28 | rcs-bugs@cs.purdue.edu | |
29 | 29 | |||
30 | */ | 30 | */ | |
31 | 31 | |||
32 | /* | 32 | /* | |
33 | * $Log: rlog.c,v $ | 33 | * $Log: rlog.c,v $ | |
34 | * Revision 1.7 2012/03/08 21:32:28 christos | |||
35 | * Teach rcs about the new cvs "commitid" keyword, so that we don't bitch each | |||
36 | * time we play with an RCS file maintained by CVS. | |||
37 | * | |||
34 | * Revision 1.6 2012/01/06 15:16:03 joerg | 38 | * Revision 1.6 2012/01/06 15:16:03 joerg | |
35 | * Don't use dangling elses. | 39 | * Don't use dangling elses. | |
36 | * | 40 | * | |
37 | * Revision 1.5 2011/05/15 14:33:12 christos | 41 | * Revision 1.5 2011/05/15 14:33:12 christos | |
38 | * register c -> int c | 42 | * register c -> int c | |
39 | * | 43 | * | |
40 | * Revision 1.4 1996/10/15 07:00:50 veego | 44 | * Revision 1.4 1996/10/15 07:00:50 veego | |
41 | * Merge rcs 5.7. | 45 | * Merge rcs 5.7. | |
42 | * | 46 | * | |
43 | * Revision 5.18 1995/06/16 06:19:24 eggert | 47 | * Revision 5.18 1995/06/16 06:19:24 eggert | |
44 | * Update FSF address. | 48 | * Update FSF address. | |
45 | * | 49 | * | |
46 | * Revision 5.17 1995/06/01 16:23:43 eggert | 50 | * Revision 5.17 1995/06/01 16:23:43 eggert | |
@@ -213,63 +217,67 @@ static void getscript P((struct hshentry | @@ -213,63 +217,67 @@ static void getscript P((struct hshentry | |||
213 | static void getstate P((char*)); | 217 | static void getstate P((char*)); | |
214 | static void putabranch P((struct hshentry const*)); | 218 | static void putabranch P((struct hshentry const*)); | |
215 | static void putadelta P((struct hshentry const*,struct hshentry const*,int)); | 219 | static void putadelta P((struct hshentry const*,struct hshentry const*,int)); | |
216 | static void putforest P((struct branchhead const*)); | 220 | static void putforest P((struct branchhead const*)); | |
217 | static void putree P((struct hshentry const*)); | 221 | static void putree P((struct hshentry const*)); | |
218 | static void putrunk P((void)); | 222 | static void putrunk P((void)); | |
219 | static void recentdate P((struct hshentry const*,struct Datepairs*)); | 223 | static void recentdate P((struct hshentry const*,struct Datepairs*)); | |
220 | static void trunclocks P((void)); | 224 | static void trunclocks P((void)); | |
221 | 225 | |||
222 | static char const *insDelFormat; | 226 | static char const *insDelFormat; | |
223 | static int branchflag; /*set on -b */ | 227 | static int branchflag; /*set on -b */ | |
224 | static int exitstatus; | 228 | static int exitstatus; | |
225 | static int lockflag; | 229 | static int lockflag; | |
230 | static int commitid; | |||
226 | static struct Datepairs *datelist, *duelst; | 231 | static struct Datepairs *datelist, *duelst; | |
227 | static struct Revpairs *revlist, *Revlst; | 232 | static struct Revpairs *revlist, *Revlst; | |
228 | static struct authors *authorlist; | 233 | static struct authors *authorlist; | |
229 | static struct rcslockers *lockerlist; | 234 | static struct rcslockers *lockerlist; | |
230 | static struct stateattri *statelist; | 235 | static struct stateattri *statelist; | |
231 | 236 | |||
232 | 237 | |||
233 | mainProg(rlogId, "rlog", "Id: rlog.c,v 5.18 1995/06/16 06:19:24 eggert Exp") | 238 | mainProg(rlogId, "rlog", "Id: rlog.c,v 5.18 1995/06/16 06:19:24 eggert Exp") | |
234 | { | 239 | { | |
235 | static char const cmdusage[] = | 240 | static char const cmdusage[] = | |
236 | "\nrlog usage: rlog -{bhLNRt} -ddates -l[lockers] -r[revs] -sstates -Vn -w[logins] -xsuff -zzone file ..."; | 241 | "\nrlog usage: rlog -{cbhLNRt} -ddates -l[lockers] -r[revs] -sstates -Vn -w[logins] -xsuff -zzone file ..."; | |
237 | 242 | |||
238 | register FILE *out; | 243 | register FILE *out; | |
239 | char *a, **newargv; | 244 | char *a, **newargv; | |
240 | struct Datepairs *currdate; | 245 | struct Datepairs *currdate; | |
241 | char const *accessListString, *accessFormat; | 246 | char const *accessListString, *accessFormat; | |
242 | char const *headFormat, *symbolFormat; | 247 | char const *headFormat, *symbolFormat; | |
243 | struct access const *curaccess; | 248 | struct access const *curaccess; | |
244 | struct assoc const *curassoc; | 249 | struct assoc const *curassoc; | |
245 | struct hshentry const *delta; | 250 | struct hshentry const *delta; | |
246 | struct rcslock const *currlock; | 251 | struct rcslock const *currlock; | |
247 | int descflag, selectflag; | 252 | int descflag, selectflag; | |
248 | int onlylockflag; /* print only files with locks */ | 253 | int onlylockflag; /* print only files with locks */ | |
249 | int onlyRCSflag; /* print only RCS pathname */ | 254 | int onlyRCSflag; /* print only RCS pathname */ | |
250 | int pre5; | 255 | int pre5; | |
251 | int shownames; | 256 | int shownames; | |
252 | int revno; | 257 | int revno; | |
253 | 258 | |||
254 | descflag = selectflag = shownames = true; | 259 | descflag = selectflag = shownames = true; | |
255 | onlylockflag = onlyRCSflag = false; | 260 | onlylockflag = onlyRCSflag = false; | |
256 | out = stdout; | 261 | out = stdout; | |
257 | suffixes = X_DEFAULT; | 262 | suffixes = X_DEFAULT; | |
258 | 263 | |||
259 | argc = getRCSINIT(argc, argv, &newargv); | 264 | argc = getRCSINIT(argc, argv, &newargv); | |
260 | argv = newargv; | 265 | argv = newargv; | |
261 | while (a = *++argv, 0<--argc && *a++=='-') { | 266 | while (a = *++argv, 0<--argc && *a++=='-') { | |
262 | switch (*a++) { | 267 | switch (*a++) { | |
268 | case 'c': | |||
269 | commitid = true; | |||
270 | break; | |||
263 | 271 | |||
264 | case 'L': | 272 | case 'L': | |
265 | onlylockflag = true; | 273 | onlylockflag = true; | |
266 | break; | 274 | break; | |
267 | 275 | |||
268 | case 'N': | 276 | case 'N': | |
269 | shownames = false; | 277 | shownames = false; | |
270 | break; | 278 | break; | |
271 | 279 | |||
272 | case 'R': | 280 | case 'R': | |
273 | onlyRCSflag =true; | 281 | onlyRCSflag =true; | |
274 | break; | 282 | break; | |
275 | 283 | |||
@@ -583,26 +591,28 @@ putadelta(node,editscript,trunk) | @@ -583,26 +591,28 @@ putadelta(node,editscript,trunk) | |||
583 | 591 | |||
584 | out = stdout; | 592 | out = stdout; | |
585 | aprintf(out, | 593 | aprintf(out, | |
586 | "----------------------------\nrevision %s%s", | 594 | "----------------------------\nrevision %s%s", | |
587 | node->num, pre5 ? " " : "" | 595 | node->num, pre5 ? " " : "" | |
588 | ); | 596 | ); | |
589 | if ( node->lockedby ) | 597 | if ( node->lockedby ) | |
590 | aprintf(out, pre5+"\tlocked by: %s;", node->lockedby); | 598 | aprintf(out, pre5+"\tlocked by: %s;", node->lockedby); | |
591 | 599 | |||
592 | aprintf(out, "\ndate: %s; author: %s; state: %s;", | 600 | aprintf(out, "\ndate: %s; author: %s; state: %s;", | |
593 | date2str(node->date, datebuf), | 601 | date2str(node->date, datebuf), | |
594 | node->author, node->state | 602 | node->author, node->state | |
595 | ); | 603 | ); | |
604 | if (commitid && node->commitid) | |||
605 | aprintf(out, " commitid: %s;", node->commitid); | |||
596 | 606 | |||
597 | if ( editscript ) { | 607 | if ( editscript ) { | |
598 | if(trunk) | 608 | if(trunk) | |
599 | aprintf(out, insDelFormat, | 609 | aprintf(out, insDelFormat, | |
600 | editscript->deletelns, editscript->insertlns); | 610 | editscript->deletelns, editscript->insertlns); | |
601 | else | 611 | else | |
602 | aprintf(out, insDelFormat, | 612 | aprintf(out, insDelFormat, | |
603 | editscript->insertlns, editscript->deletelns); | 613 | editscript->insertlns, editscript->deletelns); | |
604 | } | 614 | } | |
605 | 615 | |||
606 | newbranch = node->branches; | 616 | newbranch = node->branches; | |
607 | if ( newbranch ) { | 617 | if ( newbranch ) { | |
608 | bufautobegin(&branchnum); | 618 | bufautobegin(&branchnum); |