version 1.257, 2008/03/08 11:53:36 |
version 1.258, 2008/03/08 20:26:34 |
|
|
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); |
} |
} |
|
|
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; |
|
|
} |
} |
|
|
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; |
|
|
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; |
|
|
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) { |
|
|
follow = 0; |
follow = 0; |
} while (follow); |
} while (follow); |
|
|
return NULL; |
return (NULL); |
} |
} |
|
|