On Sun, Nov 23, 2014 at 05:19:16PM +0100, Fritjof Bornebusch wrote: > Hi tech, > > like the XXX comment says, rcsnum_cmp() can be used instead of a *for* loop. > The following shows the original behavior: > > $ co -r1.2 foo.txt,v > foo.txt,v --> foo.txt > revision 1.2 > done > > $ co -r1.1 foo.txt,v > foo.txt,v --> foo.txt > revision 1.1 > done > > $ co foo.txt,v > foo.txt,v --> foo.txt > revision 1.2 > done > > The following shows the changed behavior: > > $ co -r1.2 foo.txt,v > foo.txt,v --> foo.txt > revision 1.2 > done > > $ co -r1.1 foo.txt,v > foo.txt,v --> foo.txt > revision 1.1 > done > > $ co foo.txt,v > foo.txt,v --> foo.txt > revision 1.2 > done > > Could some verify that I didn't miss a test case.
Hmm, your examples show no diffference. I think the intention is to not change the behaviour, right? -Otto > > fritjof > > Index: co.c > =================================================================== > RCS file: /cvs/src/usr.bin/rcs/co.c,v > retrieving revision 1.119 > diff -u -p -r1.119 co.c > --- co.c 10 Oct 2014 08:15:25 -0000 1.119 > +++ co.c 23 Nov 2014 15:40:30 -0000 > @@ -265,18 +265,14 @@ checkout_rev(RCSFILE *file, RCSNUM *frev > (void)fprintf(stderr, > "no revisions present; generating empty revision 0.0\n"); > > - /* XXX rcsnum_cmp() > + /* > * Check out the latest revision if <frev> is greater than HEAD > */ > if (file->rf_ndelta != 0) { > - for (i = 0; i < file->rf_head->rn_len; i++) { > - if (file->rf_head->rn_id[i] < frev->rn_id[i]) { > - frev = file->rf_head; > - break; > - } > - } > + if (rcsnum_cmp(file->rf_head, frev, 0) == 1) > + frev = file->rf_head; > } > - > + > lcount = 0; > TAILQ_FOREACH(lkp, &(file->rf_locks), rl_list) { > if (!strcmp(lkp->rl_name, lockname)) > > > Index: rcs.c > =================================================================== > RCS file: /cvs/src/usr.bin/rcs/rcs.c,v > retrieving revision 1.81 > diff -u -p -r1.81 rcs.c > --- rcs.c 10 Oct 2014 08:15:25 -0000 1.81 > +++ rcs.c 23 Nov 2014 15:56:58 -0000 > @@ -905,16 +905,15 @@ rcs_getrev(RCSFILE *rfp, RCSNUM *frev) > else > rev = frev; > > - /* XXX rcsnum_cmp() */ > - for (i = 0; i < rfp->rf_head->rn_len; i++) { > - if (rfp->rf_head->rn_id[i] < rev->rn_id[i]) { > - rcs_errno = RCS_ERR_NOENT; > - return (NULL); > - } > + if(rcsnum_cmp(rfp->rf_head, rev, 0) == 1) { > + rcs_errno = RCS_ERR_NOENT; > + return (NULL); > } > - > - /* No matter what, we'll need everything parsed up until the description > - so go for it. */ > + > + /* > + * No matter what, we'll need everything parsed up until the description > + * so go for it. > + */ > if (rcsparse_deltas(rfp, NULL)) > return (NULL); >