version 1.71, 2007/01/12 23:56:11 |
version 1.72, 2007/01/13 15:29:34 |
|
|
|
|
int cvs_checkout(int, char **); |
int cvs_checkout(int, char **); |
int cvs_export(int, char **); |
int cvs_export(int, char **); |
|
|
static void checkout_check_repository(int, char **); |
static void checkout_check_repository(int, char **); |
static void checkout_repository(const char *, const char *); |
static void checkout_repository(const char *, const char *); |
|
static void checkout_write_revision(RCSFILE *, RCSNUM *, char *); |
|
|
extern int prune_dirs; |
extern int prune_dirs; |
extern int build_dirs; |
extern int build_dirs; |
|
|
time_t rcstime; |
time_t rcstime; |
CVSENTRIES *ent; |
CVSENTRIES *ent; |
struct timeval tv[2]; |
struct timeval tv[2]; |
char *p, *entry, rev[16], timebuf[64], tbuf[32], stickytag[32]; |
char *template, *p, *entry, rev[16], timebuf[64]; |
|
char tbuf[32], stickytag[32]; |
|
|
rcsnum_tostr(rnum, rev, sizeof(rev)); |
rcsnum_tostr(rnum, rev, sizeof(rev)); |
|
|
|
|
cvs_remote_output(entry); |
cvs_remote_output(entry); |
|
|
if (!(flags & CO_COMMIT)) { |
if (!(flags & CO_COMMIT)) { |
#if 0 |
(void)xasprintf(&template, |
cvs_remote_output("u=rw,g=rw,o=rw"); |
"%s/checkout.XXXXXXXXXX", cvs_tmpdir); |
|
|
/* XXX */ |
/* XXX - fd race below */ |
printf("%ld\n", cvs_buf_len(nbp)); |
checkout_write_revision(cf->file_rcs, rnum, template); |
|
cvs_remote_send_file(template); |
if (cvs_buf_write_fd(nbp, STDOUT_FILENO) == -1) |
(void)unlink(template); |
fatal("cvs_checkout_file: failed to send file"); |
|
cvs_buf_free(nbp); |
|
#endif |
|
} |
} |
|
|
if (p != NULL) |
if (p != NULL) |
|
|
} |
} |
|
|
xfree(entry); |
xfree(entry); |
|
} |
|
|
|
static void |
|
checkout_write_revision(RCSFILE *rfp, RCSNUM *rev, char *template) |
|
{ |
|
int fd; |
|
|
|
if ((fd = mkstemp(template)) == -1) |
|
fatal("mkstemp: '%s': %s", template, strerror(errno)); |
|
|
|
cvs_worklist_add(template, &temp_files); |
|
rcs_rev_write_fd(rfp, rev, fd, 0); |
|
(void)close(fd); |
} |
} |