[BACK]Return to rcs.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / cvs

Diff for /src/usr.bin/cvs/rcs.c between version 1.257 and 1.258

version 1.257, 2008/03/08 11:53:36 version 1.258, 2008/03/08 20:26:34
Line 2622 
Line 2622 
                 if ((rdp = rcs_findrev(rfp, brp->rb_num)) == NULL)                  if ((rdp = rcs_findrev(rfp, brp->rb_num)) == NULL)
                         fatal("rcs_get_revision: could not fetch branch "                          fatal("rcs_get_revision: could not fetch branch "
                             "delta");                              "delta");
                 /* Find the latest delta on that branch */  
                 for (;;) {  
                         if (rdp->rd_next->rn_len == 0)  
                                 break;  
                         if ((rdp = rcs_findrev(rfp, rdp->rd_next)) == NULL)  
                                 fatal("rcs_get_revision: could not fetch "  
                                     "branch delta");  
                 }  
                 rcsnum_cpy(rdp->rd_num, frev, 0);                  rcsnum_cpy(rdp->rd_num, frev, 0);
                 return (frev);                  return (frev);
         }          }
Line 3448 
Line 3440 
 rcs_translate_tag(const char *revstr, RCSFILE *rfp)  rcs_translate_tag(const char *revstr, RCSFILE *rfp)
 {  {
         int follow;          int follow;
           time_t deltatime;
         char branch[CVS_REV_BUFSZ];          char branch[CVS_REV_BUFSZ];
         RCSNUM *brev, *frev, *rev;          RCSNUM *brev, *frev, *rev;
         struct rcs_delta *rdp, *trdp;          struct rcs_delta *rdp, *trdp;
Line 3464 
Line 3457 
         }          }
   
         if ((rev = rcs_get_revision(revstr, rfp)) == NULL)          if ((rev = rcs_get_revision(revstr, rfp)) == NULL)
                 return NULL;                  return (NULL);
   
           if ((rdp = rcs_findrev(rfp, rev)) == NULL)
                   fatal("rcs_translate_tag: cannot find revision");
   
           if (cvs_specified_date == -1) {
   
                   /* XXX */
                   if (rev->rn_len < 4) {
                           return (rev);
                   }
   
                   /* Find the latest delta on that branch */
                   rcsnum_free(rev);
                   for (;;) {
                           if (rdp->rd_next->rn_len == 0)
                                   break;
                           if ((rdp = rcs_findrev(rfp, rdp->rd_next)) == NULL)
                                   fatal("rcs_get_revision: could not fetch "
                                       "branch delta");
                   }
   
                   rev = rcsnum_alloc();
                   rcsnum_cpy(rdp->rd_num, rev, 0);
                   return (rev);
           }
   
         /* let's see if we must follow a branch */          /* let's see if we must follow a branch */
         if (!strcmp(revstr, RCS_HEAD_BRANCH))          if (!strcmp(revstr, RCS_HEAD_BRANCH))
                 follow = 1;                  follow = 1;
Line 3478 
Line 3496 
                         follow = 0;                          follow = 0;
         }          }
   
         if ((rdp = rcs_findrev(rfp, rev)) == NULL)          if (frev != NULL)
                 fatal("rcs_translate_tag: cannot find revision");                  rcsnum_tostr(frev, branch, sizeof(branch));
   
         if (cvs_specified_date == -1)  
                 return rev;  
   
         if (frev != NULL) {          if (frev != NULL) {
                 brev = rcsnum_revtobr(frev);                  brev = rcsnum_revtobr(frev);
                 brev->rn_len = rev->rn_len;                  brev->rn_len = rev->rn_len;
Line 3492 
Line 3507 
         rcsnum_free(rev);          rcsnum_free(rev);
   
         do {          do {
                 if (timelocal(&(rdp->rd_date)) < cvs_specified_date) {                  deltatime = timelocal(&(rdp->rd_date));
                         rev = rcsnum_alloc();  
                         rcsnum_cpy(rdp->rd_num, rev, 0);                  if (RCSNUM_ISBRANCHREV(rdp->rd_num)) {
                         return rev;                          if (deltatime > cvs_specified_date) {
                                   trdp = TAILQ_PREV(rdp, rcs_dlist, rd_list);
                                   if (trdp == NULL)
                                           trdp = rdp;
                                   rev = rcsnum_alloc();
                                   rcsnum_cpy(trdp->rd_num, rev, 0);
                                   return (rev);
                           }
                   } else {
                           if (deltatime < cvs_specified_date) {
                                   rev = rcsnum_alloc();
                                   rcsnum_cpy(rdp->rd_num, rev, 0);
                                   return (rev);
                           }
                 }                  }
   
                 if (follow && rdp->rd_next->rn_len != 0) {                  if (follow && rdp->rd_next->rn_len != 0) {
Line 3510 
Line 3538 
                         follow = 0;                          follow = 0;
         } while (follow);          } while (follow);
   
         return NULL;          return (NULL);
 }  }
   

Legend:
Removed from v.1.257  
changed lines
  Added in v.1.258