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);
>  


Reply via email to