version 1.121, 2008/01/28 21:26:51 |
version 1.122, 2008/01/28 21:32:00 |
|
|
commit_diff(struct cvs_file *cf, RCSNUM *rev, int reverse) |
commit_diff(struct cvs_file *cf, RCSNUM *rev, int reverse) |
{ |
{ |
char *p1, *p2, *p; |
char *p1, *p2, *p; |
BUF *b1, *b2; |
BUF *b; |
|
|
(void)xasprintf(&p1, "%s/diff1.XXXXXXXXXX", cvs_tmpdir); |
(void)xasprintf(&p1, "%s/diff1.XXXXXXXXXX", cvs_tmpdir); |
|
|
if (cf->file_status == FILE_MODIFIED || |
if (cf->file_status == FILE_MODIFIED || |
cf->file_status == FILE_ADDED) { |
cf->file_status == FILE_ADDED) { |
if ((b1 = cvs_buf_load_fd(cf->fd, BUF_AUTOEXT)) == NULL) |
if ((b = cvs_buf_load_fd(cf->fd, BUF_AUTOEXT)) == NULL) |
fatal("commit_diff: failed to load '%s'", |
fatal("commit_diff: failed to load '%s'", |
cf->file_path); |
cf->file_path); |
cvs_buf_write_stmp(b1, p1, NULL); |
cvs_buf_write_stmp(b, p1, NULL); |
cvs_buf_free(b1); |
cvs_buf_free(b); |
} else { |
} else { |
rcs_rev_write_stmp(cf->file_rcs, rev, p1, 0); |
rcs_rev_write_stmp(cf->file_rcs, rev, p1, 0); |
} |
} |
|
|
(void)xasprintf(&p2, "%s/diff2.XXXXXXXXXX", cvs_tmpdir); |
(void)xasprintf(&p2, "%s/diff2.XXXXXXXXXX", cvs_tmpdir); |
rcs_rev_write_stmp(cf->file_rcs, rev, p2, RCS_KWEXP_NONE); |
rcs_rev_write_stmp(cf->file_rcs, rev, p2, RCS_KWEXP_NONE); |
|
|
if ((b2 = cvs_buf_alloc(128, BUF_AUTOEXT)) == NULL) |
if ((b = cvs_buf_alloc(128, BUF_AUTOEXT)) == NULL) |
fatal("commit_diff: failed to create diff buf"); |
fatal("commit_diff: failed to create diff buf"); |
|
|
diff_format = D_RCSDIFF; |
diff_format = D_RCSDIFF; |
|
|
p2 = p; |
p2 = p; |
} |
} |
|
|
if (cvs_diffreg(p1, p2, b2) == D_ERROR) |
if (cvs_diffreg(p1, p2, b) == D_ERROR) |
fatal("commit_diff: failed to get RCS patch"); |
fatal("commit_diff: failed to get RCS patch"); |
|
|
xfree(p1); |
xfree(p1); |
xfree(p2); |
xfree(p2); |
|
|
return (b2); |
return (b); |
} |
} |
|
|
static void |
static void |