version 1.142, 2006/03/11 18:40:14 |
version 1.143, 2006/03/11 22:44:11 |
|
|
time_t now; |
time_t now; |
struct passwd *pw; |
struct passwd *pw; |
struct rcs_delta *ordp, *rdp; |
struct rcs_delta *ordp, *rdp; |
RCSNUM *old; |
|
|
|
old = rcsnum_alloc(); |
|
if (rev == RCS_HEAD_REV) { |
if (rev == RCS_HEAD_REV) { |
if (rf->rf_flags & RCS_CREATE) { |
if (rf->rf_flags & RCS_CREATE) { |
if ((rev = rcsnum_parse(RCS_HEAD_INIT)) == NULL) |
if ((rev = rcsnum_parse(RCS_HEAD_INIT)) == NULL) |
|
|
rf->rf_head = rcsnum_alloc(); |
rf->rf_head = rcsnum_alloc(); |
rcsnum_cpy(rev, rf->rf_head, 0); |
rcsnum_cpy(rev, rf->rf_head, 0); |
} else { |
} else { |
rcsnum_cpy(rf->rf_head, old, 0); |
|
rev = rcsnum_inc(rf->rf_head); |
rev = rcsnum_inc(rf->rf_head); |
} |
} |
} else { |
} else { |
if ((rdp = rcs_findrev(rf, rev)) != NULL) { |
if ((rdp = rcs_findrev(rf, rev)) != NULL) { |
rcs_errno = RCS_ERR_DUPENT; |
rcs_errno = RCS_ERR_DUPENT; |
rcsnum_free(old); |
|
return (-1); |
return (-1); |
} |
} |
|
|
if (!(rf->rf_flags & RCS_CREATE)) { |
|
ordp = NULL; |
|
rcsnum_cpy(rev, old, 0); |
|
while (ordp == NULL) { |
|
old = rcsnum_dec(old); |
|
ordp = rcs_findrev(rf, old); |
|
} |
|
} |
|
} |
} |
|
|
if ((pw = getpwuid(getuid())) == NULL) |
if ((pw = getpwuid(getuid())) == NULL) |
|
|
|
|
rdp->rd_next = rcsnum_alloc(); |
rdp->rd_next = rcsnum_alloc(); |
|
|
if (!(rf->rf_flags & RCS_CREATE)) |
if (!(rf->rf_flags & RCS_CREATE)) { |
rcsnum_cpy(old, rdp->rd_next, 0); |
/* next should point to the previous HEAD */ |
|
ordp = TAILQ_FIRST(&(rf->rf_delta)); |
|
rcsnum_cpy(ordp->rd_num, rdp->rd_next, 0); |
|
} |
|
|
rcsnum_free(old); |
|
|
|
if (username == NULL) |
if (username == NULL) |
username = pw->pw_name; |
username = pw->pw_name; |
|
|
oldrev = rcsnum_alloc(); |
oldrev = rcsnum_alloc(); |
rcsnum_cpy(rev, oldrev, 0); |
rcsnum_cpy(rev, oldrev, 0); |
|
|
if (rcsnum_dec(oldrev) == NULL) |
if (oldrev->rn_id[oldrev->rn_len - 1] <= 0) |
goto out; |
goto out; |
|
oldrev = rcsnum_dec(oldrev); |
|
|
l = snprintf(copyfile, sizeof(copyfile), ".#%s.%s", |
l = snprintf(copyfile, sizeof(copyfile), ".#%s.%s", |
cf->cf_name, rcsnum_tostr(oldrev, buf, sizeof(buf))); |
cf->cf_name, rcsnum_tostr(oldrev, buf, sizeof(buf))); |