Hi tech@, I had a simple RCS file and opencvs didn't annotate it properly.
cat -n $CVSROOT/test/text,v 1 head 1.2; 2 access; 3 symbols 4 start:1.1.1.1 5 me:1.1.0.1; 6 locks; strict; 7 comment @# @; 8 9 10 1.2 11 date 2015.11.15.06.43.34; author omm; state Exp; 12 branches; 13 next 1.1; 14 15 1.1 16 date 2015.11.15.06.40.34; author omm; state Exp; 17 branches 18 1.1.1.1; 19 next ; 20 21 1.1.1.1 22 date 2015.11.15.06.40.34; author omm; state Exp; 23 branches; 24 next ; 25 26 27 desc 28 @@ 29 30 31 1.2 32 log 33 @thing 34 @ 35 text 36 @no 37 woman 38 no 39 cry 40 @ 41 42 43 1.1 44 log 45 @Initial revision 46 @ 47 text 48 @d1 1 49 d4 1 50 @ 51 52 53 1.1.1.1 54 log 55 @hi 56 @ 57 text 58 @@ GNU cvs is correct... $ cvs annotate text Annotations for text *************** 1.2 (omm 15-Nov-15): no 1.1 (omm 15-Nov-15): woman 1.1 (omm 15-Nov-15): no 1.2 (omm 15-Nov-15): cry $ opencvs annotate text Annotations for text *************** 1.1 (omm 15-Nov-15): no 1.1 (omm 15-Nov-15): woman 1.1 (omm 15-Nov-15): no 1.1 (omm 15-Nov-15): cry After appling patch (below) opencvs matches GNU cvs annotation and blame. $ blame -V blame 1.3.1; emulating RCS version 5 $ blame $CVSROOT/test/text,v | sha256 Annotations for text *************** 2bcdf1fddf23fecd0710bba4376ba21e394bc97a6a2403b5453320bcea109d5c $ cvs ann text | sha256 Annotations for text *************** 2bcdf1fddf23fecd0710bba4376ba21e394bc97a6a2403b5453320bcea109d5c $ opencvs ann text | sha256 Annotations for text *************** 2bcdf1fddf23fecd0710bba4376ba21e394bc97a6a2403b5453320bcea109d5c I also tested this against a non-trival RCS file: r1.125 of OpenBSD's src/Makefile. $ cvs ann Makefile | sha256 Annotations for Makefile *************** 335b6c5735636e8358db6058bd4e9e2bd3173c80e70a0fc1dd86f541a73eb1c7 $ opencvs ann Makefile | sha256 Annotations for Makefile *************** 335b6c5735636e8358db6058bd4e9e2bd3173c80e70a0fc1dd86f541a73eb1c7 Then I looked in history of rcs.c and found that my patch is the opposite of a fix for an infinite loop bug... http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/cvs/rcs.c#rev1.298 Below patch is for reference only; it's what I applied to "fix" local annotate. Did the previous infinite loop issue only affect server/remote mode of opencvs? - Michael Index: rcs.c =================================================================== RCS file: /cvs/src/usr.bin/cvs/rcs.c,v retrieving revision 1.313 diff -U 5 -p -r1.313 rcs.c --- rcs.c 5 Nov 2015 09:48:21 -0000 1.313 +++ rcs.c 15 Nov 2015 08:29:18 -0000 @@ -1798,17 +1798,10 @@ again: for (;;) { if (rdp->rd_next->rn_len != 0) { trdp = rcs_findrev(rfp, rdp->rd_next); if (trdp == NULL) fatal("failed to grab next revision"); - } else { - /* - * XXX Fail, although the caller does not always do the - * right thing (eg cvs diff when the tree is ahead of - * the repository). - */ - break; } if (rdp->rd_tlen == 0) { if (rcsparse_deltatexts(rfp, rdp->rd_num)) fatal("rcs_rev_getlines: rcsparse_deltatexts");