version 1.130, 2008/02/27 20:04:59 |
version 1.131, 2008/02/27 22:34:04 |
|
|
#include <sys/time.h> |
#include <sys/time.h> |
|
|
#include <errno.h> |
#include <errno.h> |
|
#include <fcntl.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
#include <unistd.h> |
#include <unistd.h> |
|
|
{ |
{ |
RCSNUM *r1; |
RCSNUM *r1; |
BUF *b1; |
BUF *b1; |
|
int fd1, fd2; |
struct stat st; |
struct stat st; |
struct timeval tv[2], tv2[2]; |
struct timeval tv[2], tv2[2]; |
char rbuf[CVS_REV_BUFSZ], *p1, *p2; |
char rbuf[CVS_REV_BUFSZ], *p1, *p2; |
|
|
|
|
if (cvs_cmdop == CVS_OP_DIFF) |
if (cvs_cmdop == CVS_OP_DIFF) |
cvs_printf("retrieving revision %s\n", rbuf); |
cvs_printf("retrieving revision %s\n", rbuf); |
rcs_rev_write_stmp(cf->file_rcs, r1, p1, 0); |
fd1 = rcs_rev_write_stmp(cf->file_rcs, r1, p1, 0); |
if (utimes(p1, tv) == -1) |
if (futimes(fd1, tv) == -1) |
fatal("cvs_diff_local: utimes failed"); |
fatal("cvs_diff_local: utimes failed"); |
} |
} |
} |
} |
|
|
|
|
if (cvs_cmdop == CVS_OP_DIFF) |
if (cvs_cmdop == CVS_OP_DIFF) |
cvs_printf("retrieving revision %s\n", rbuf); |
cvs_printf("retrieving revision %s\n", rbuf); |
rcs_rev_write_stmp(cf->file_rcs, diff_rev2, p2, 0); |
fd2 = rcs_rev_write_stmp(cf->file_rcs, diff_rev2, p2, 0); |
if (utimes(p2, tv2) == -1) |
if (futimes(fd2, tv2) == -1) |
fatal("cvs_diff_local: utimes failed"); |
fatal("cvs_diff_local: utimes failed"); |
} else if (cf->file_status != FILE_REMOVED) { |
} else if (cf->file_status != FILE_REMOVED) { |
if (cvs_cmdop == CVS_OP_RDIFF || (cvs_server_active == 1 && |
if (cvs_cmdop == CVS_OP_RDIFF || (cvs_server_active == 1 && |
|
|
tv2[0].tv_usec = 0; |
tv2[0].tv_usec = 0; |
tv2[1] = tv2[0]; |
tv2[1] = tv2[0]; |
|
|
rcs_rev_write_stmp(cf->file_rcs, |
fd2 = rcs_rev_write_stmp(cf->file_rcs, |
cf->file_rcsrev, p2, 0); |
cf->file_rcsrev, p2, 0); |
if (utimes(p2, tv2) == -1) |
if (futimes(fd2, tv2) == -1) |
fatal("cvs_diff_local: utimes failed"); |
fatal("cvs_diff_local: utimes failed"); |
} |
} |
} else { |
} else { |
|
|
tv2[0].tv_usec = 0; |
tv2[0].tv_usec = 0; |
tv2[1] = tv2[0]; |
tv2[1] = tv2[0]; |
|
|
cvs_buf_write_stmp(b1, p2, tv2); |
fd2 = cvs_buf_write_stmp(b1, p2, tv2); |
cvs_buf_free(b1); |
cvs_buf_free(b1); |
} |
} |
} |
} |
|
|
if (cf->file_status == FILE_ADDED || |
if (cf->file_status == FILE_ADDED || |
(cvs_cmdop == CVS_OP_RDIFF && diff_rev1 == NULL)) { |
(cvs_cmdop == CVS_OP_RDIFF && diff_rev1 == NULL)) { |
xfree(p1); |
xfree(p1); |
|
close(fd1); |
(void)xasprintf(&p1, "%s", CVS_PATH_DEVNULL); |
(void)xasprintf(&p1, "%s", CVS_PATH_DEVNULL); |
|
if ((fd1 = open(p1, O_RDONLY)) == -1) |
|
fatal("cvs_diff_local: cannot open %s", |
|
CVS_PATH_DEVNULL); |
} else if (cf->file_status == FILE_REMOVED || |
} else if (cf->file_status == FILE_REMOVED || |
(cvs_cmdop == CVS_OP_RDIFF && diff_rev2 == NULL)) { |
(cvs_cmdop == CVS_OP_RDIFF && diff_rev2 == NULL)) { |
xfree(p2); |
xfree(p2); |
|
close(fd2); |
(void)xasprintf(&p2, "%s", CVS_PATH_DEVNULL); |
(void)xasprintf(&p2, "%s", CVS_PATH_DEVNULL); |
|
if ((fd1 = open(p2, O_RDONLY)) == -1) |
|
fatal("cvs_diff_local: cannot open %s", |
|
CVS_PATH_DEVNULL); |
} |
} |
|
|
if (cvs_diffreg(p1, p2, NULL) == D_ERROR) |
if (cvs_diffreg(p1, p2, fd1, fd2, NULL) == D_ERROR) |
fatal("cvs_diff_local: failed to get RCS patch"); |
fatal("cvs_diff_local: failed to get RCS patch"); |
|
|
|
close(fd1); |
|
close(fd2); |
|
|
cvs_worklist_run(&temp_files, cvs_worklist_unlink); |
cvs_worklist_run(&temp_files, cvs_worklist_unlink); |
|
|