version 1.68, 2006/03/29 08:44:08 |
version 1.69, 2006/03/30 23:06:25 |
|
|
} |
} |
|
|
for (i = 0; i < argc; i++) { |
for (i = 0; i < argc; i++) { |
|
frev = NULL; |
if (rcs_statfile(argv[i], fpath, sizeof(fpath)) < 0) |
if (rcs_statfile(argv[i], fpath, sizeof(fpath)) < 0) |
continue; |
continue; |
|
|
|
|
rcs_set_mtime(fpath, rcs_mtime); |
rcs_set_mtime(fpath, rcs_mtime); |
} |
} |
|
|
if (rev != RCS_HEAD_REV) |
if ((rev != RCS_HEAD_REV) && (frev != NULL)) |
rcsnum_free(frev); |
rcsnum_free(frev); |
|
|
return (status); |
return (status); |
|
|
const char *date) |
const char *date) |
{ |
{ |
BUF *bp; |
BUF *bp; |
|
u_int i; |
int lcount; |
int lcount; |
char buf[16]; |
char buf[16]; |
mode_t mode = 0444; |
mode_t mode = 0444; |
|
|
struct rcs_lock *lkp; |
struct rcs_lock *lkp; |
char *content, msg[128], *fdate; |
char *content, msg[128], *fdate; |
time_t rcsdate, givendate; |
time_t rcsdate, givendate; |
|
RCSNUM *rev; |
|
|
rcsdate = givendate = -1; |
rcsdate = givendate = -1; |
if (date != NULL) |
if (date != NULL) |
givendate = cvs_date_parse(date); |
givendate = cvs_date_parse(date); |
|
|
/* Check out the latest revision if <frev> is greater than HEAD */ |
/* XXX rcsnum_cmp() |
if (rcsnum_cmp(frev, file->rf_head, 0) == -1) |
* Check out the latest revision if <frev> is greater than HEAD |
frev = file->rf_head; |
*/ |
|
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; |
|
} |
|
} |
|
|
lcount = 0; |
lcount = 0; |
TAILQ_FOREACH(lkp, &(file->rf_locks), rl_list) { |
TAILQ_FOREACH(lkp, &(file->rf_locks), rl_list) { |
|
|
return (-1); |
return (-1); |
} |
} |
|
|
rcsnum_tostr(frev, buf, sizeof(buf)); |
rev = rdp->rd_num; |
|
rcsnum_tostr(rev, buf, sizeof(buf)); |
|
|
if (rdp->rd_locker != NULL) { |
if (rdp->rd_locker != NULL) { |
if (strcmp(lockname, rdp->rd_locker)) { |
if (strcmp(lockname, rdp->rd_locker)) { |
|
|
printf("revision %s", buf); |
printf("revision %s", buf); |
|
|
|
|
if ((bp = rcs_getrev(file, frev)) == NULL) { |
if ((bp = rcs_getrev(file, rev)) == NULL) { |
cvs_log(LP_ERR, "cannot find revision `%s'", buf); |
cvs_log(LP_ERR, "cannot find revision `%s'", buf); |
return (-1); |
return (-1); |
} |
} |
|
|
/* |
/* |
* Do keyword expansion if required. |
* Do keyword expansion if required. |
*/ |
*/ |
bp = rcs_kwexp_buf(bp, file, frev); |
bp = rcs_kwexp_buf(bp, file, rev); |
|
|
/* |
/* |
* File inherits permissions from its ,v file |
* File inherits permissions from its ,v file |
|
|
|
|
if (flags & CO_LOCK) { |
if (flags & CO_LOCK) { |
if ((lockname != NULL) |
if ((lockname != NULL) |
&& (rcs_lock_add(file, lockname, frev) < 0)) { |
&& (rcs_lock_add(file, lockname, rev) < 0)) { |
if (rcs_errno != RCS_ERR_DUPENT) |
if (rcs_errno != RCS_ERR_DUPENT) |
return (-1); |
return (-1); |
} |
} |
|
|
if ((verbose == 1) && !(flags & NEWFILE)) |
if ((verbose == 1) && !(flags & NEWFILE)) |
printf(" (locked)"); |
printf(" (locked)"); |
} else if (flags & CO_UNLOCK) { |
} else if (flags & CO_UNLOCK) { |
if (rcs_lock_remove(file, lockname, frev) < 0) { |
if (rcs_lock_remove(file, lockname, rev) < 0) { |
if (rcs_errno != RCS_ERR_NOENT) |
if (rcs_errno != RCS_ERR_NOENT) |
return (-1); |
return (-1); |
} |
} |
|
|
if (flags & CO_REVDATE) { |
if (flags & CO_REVDATE) { |
struct timeval tv[2]; |
struct timeval tv[2]; |
memset(&tv, 0, sizeof(tv)); |
memset(&tv, 0, sizeof(tv)); |
tv[0].tv_sec = (long)rcs_rev_getdate(file, frev); |
tv[0].tv_sec = (long)rcs_rev_getdate(file, rev); |
tv[1].tv_sec = tv[0].tv_sec; |
tv[1].tv_sec = tv[0].tv_sec; |
if (utimes(dst, (const struct timeval *)&tv) < 0) |
if (utimes(dst, (const struct timeval *)&tv) < 0) |
cvs_log(LP_ERRNO, "error setting utimes"); |
cvs_log(LP_ERRNO, "error setting utimes"); |