version 1.272, 2008/06/14 00:47:49 |
version 1.273, 2008/06/14 03:19:15 |
|
|
|
|
expand = 0; |
expand = 0; |
lines = rcs_rev_getlines(rfp, rev, NULL); |
lines = rcs_rev_getlines(rfp, rev, NULL); |
bp = cvs_buf_alloc(1024 * 1024); |
bp = cvs_buf_alloc(1024 * 16); |
|
|
if (!(mode & RCS_KWEXP_NONE)) { |
if (!(mode & RCS_KWEXP_NONE)) { |
if (rfp->rf_expand != NULL) |
if (rfp->rf_expand != NULL) |
|
|
* file descriptor <fd>. |
* file descriptor <fd>. |
*/ |
*/ |
void |
void |
rcs_rev_write_fd(RCSFILE *rfp, RCSNUM *rev, int fd, int mode) |
rcs_rev_write_fd(RCSFILE *rfp, RCSNUM *rev, int _fd, int mode) |
{ |
{ |
|
int fd; |
|
FILE *fp; |
|
size_t ret; |
int expmode, expand; |
int expmode, expand; |
struct rcs_delta *rdp; |
struct rcs_delta *rdp; |
struct cvs_lines *lines; |
struct cvs_lines *lines; |
|
|
} |
} |
} |
} |
|
|
|
fd = dup(_fd); |
|
if (fd == -1) |
|
fatal("rcs_rev_write_fd: dup: %s", strerror(errno)); |
|
|
|
if ((fp = fdopen(fd, "w")) == NULL) |
|
fatal("rcs_rev_write_fd: fdopen: %s", strerror(errno)); |
|
|
for (lp = TAILQ_FIRST(&lines->l_lines); lp != NULL;) { |
for (lp = TAILQ_FIRST(&lines->l_lines); lp != NULL;) { |
nlp = TAILQ_NEXT(lp, l_list); |
nlp = TAILQ_NEXT(lp, l_list); |
|
|
|
|
if (cvs_server_active == 1 && |
if (cvs_server_active == 1 && |
(cvs_cmdop == CVS_OP_CHECKOUT || |
(cvs_cmdop == CVS_OP_CHECKOUT || |
cvs_cmdop == CVS_OP_UPDATE) && print_stdout == 1) { |
cvs_cmdop == CVS_OP_UPDATE) && print_stdout == 1) { |
if (atomicio(vwrite, fd, "M ", 2) != 2) |
ret = fwrite("M ", 1, 2, fp); |
|
if (ret != 2) |
fatal("rcs_rev_write_fd: %s", |
fatal("rcs_rev_write_fd: %s", |
strerror(errno)); |
strerror(errno)); |
} |
} |
|
|
if (atomicio(vwrite, fd, lp->l_line, lp->l_len) != |
ret = fwrite(lp->l_line, 1, lp->l_len, fp); |
lp->l_len) |
if (ret != lp->l_len) |
fatal("rcs_rev_write_fd: %s", strerror(errno)); |
fatal("rcs_rev_write_fd: %s", strerror(errno)); |
} while ((lp = TAILQ_NEXT(lp, l_list)) != nlp); |
} while ((lp = TAILQ_NEXT(lp, l_list)) != nlp); |
} |
} |
|
|
cvs_freelines(lines); |
cvs_freelines(lines); |
|
(void)fclose(fp); |
} |
} |
|
|
/* |
/* |
|
|
|
|
return (NULL); |
return (NULL); |
} |
} |
|
|