version 1.208, 2007/02/04 15:05:05 |
version 1.209, 2007/02/19 11:40:00 |
|
|
int |
int |
rcs_patch_lines(struct cvs_lines *dlines, struct cvs_lines *plines) |
rcs_patch_lines(struct cvs_lines *dlines, struct cvs_lines *plines) |
{ |
{ |
char op, *ep; |
u_char op; |
|
char *ep; |
struct cvs_line *lp, *dlp, *ndlp; |
struct cvs_line *lp, *dlp, *ndlp; |
int i, lineno, nbln; |
int i, lineno, nbln; |
u_char tmp; |
u_char tmp; |
|
|
/* NUL-terminate line buffer for strtol() safety. */ |
/* NUL-terminate line buffer for strtol() safety. */ |
tmp = lp->l_line[lp->l_len - 1]; |
tmp = lp->l_line[lp->l_len - 1]; |
lp->l_line[lp->l_len - 1] = '\0'; |
lp->l_line[lp->l_len - 1] = '\0'; |
lineno = (int)strtol((lp->l_line + 1), &ep, 10); |
lineno = (int)strtol((char*)(lp->l_line + 1), &ep, 10); |
if (lineno - 1 > dlines->l_nblines || lineno < 0) { |
if (lineno - 1 > dlines->l_nblines || lineno < 0) { |
fatal("invalid line specification in RCS patch"); |
fatal("invalid line specification in RCS patch"); |
} |
} |
|
|
brp->rb_num = rcsnum_alloc(); |
brp->rb_num = rcsnum_alloc(); |
rcsnum_cpy(rdp->rd_num, brp->rb_num, 0); |
rcsnum_cpy(rdp->rd_num, brp->rb_num, 0); |
TAILQ_INSERT_TAIL(&(rdp->rd_branches), brp, rb_list); |
TAILQ_INSERT_TAIL(&(rdp->rd_branches), brp, rb_list); |
|
|
ordp = TAILQ_PREV(rdp, rcs_dlist, rd_list); |
ordp = TAILQ_PREV(rdp, rcs_dlist, rd_list); |
rcsnum_cpy(rdp->rd_num, ordp->rd_next, 0); |
rcsnum_cpy(rdp->rd_num, ordp->rd_next, 0); |
} else { |
} else { |
|
|
{ |
{ |
char *path_tmp1, *path_tmp2; |
char *path_tmp1, *path_tmp2; |
struct rcs_delta *rdp, *prevrdp, *nextrdp; |
struct rcs_delta *rdp, *prevrdp, *nextrdp; |
BUF *nextbuf, *prevbuf, *newdiff, *newdeltatext; |
BUF *prevbuf, *newdiff, *newdeltatext; |
|
|
if (rev == RCS_HEAD_REV) |
if (rev == RCS_HEAD_REV) |
rev = rf->rf_head; |
rev = rf->rf_head; |
|
|
nextrdp = (struct rcs_delta *)TAILQ_PREV(rdp, cvs_tqh, rd_list); |
nextrdp = (struct rcs_delta *)TAILQ_PREV(rdp, cvs_tqh, rd_list); |
|
|
newdeltatext = NULL; |
newdeltatext = NULL; |
prevbuf = nextbuf = NULL; |
prevbuf = NULL; |
|
|
if (prevrdp != NULL && nextrdp != NULL) { |
if (prevrdp != NULL && nextrdp != NULL) { |
newdiff = cvs_buf_alloc(64, BUF_AUTOEXT); |
newdiff = cvs_buf_alloc(64, BUF_AUTOEXT); |
|
|
rcs_findrev(RCSFILE *rfp, RCSNUM *rev) |
rcs_findrev(RCSFILE *rfp, RCSNUM *rev) |
{ |
{ |
int isbrev; |
int isbrev; |
u_int cmplen; |
|
struct rcs_delta *rdp; |
struct rcs_delta *rdp; |
|
|
isbrev = RCSNUM_ISBRANCHREV(rev); |
isbrev = RCSNUM_ISBRANCHREV(rev); |
|
|
rcs_parse_deltas(rfp, rev); |
rcs_parse_deltas(rfp, rev); |
} |
} |
|
|
cmplen = rev->rn_len; |
|
|
|
TAILQ_FOREACH(rdp, &(rfp->rf_delta), rd_list) { |
TAILQ_FOREACH(rdp, &(rfp->rf_delta), rd_list) { |
if (rcsnum_differ(rdp->rd_num, rev)) |
if (rcsnum_differ(rdp->rd_num, rev)) |
continue; |
continue; |
|
|
struct cvs_lines * |
struct cvs_lines * |
rcs_rev_getlines(RCSFILE *rfp, RCSNUM *frev) |
rcs_rev_getlines(RCSFILE *rfp, RCSNUM *frev) |
{ |
{ |
size_t i, plen; |
size_t plen; |
int done, nextroot, found; |
int i, done, nextroot, found; |
RCSNUM *tnum, *bnum; |
RCSNUM *tnum, *bnum; |
struct rcs_branch *brp; |
struct rcs_branch *brp; |
struct rcs_delta *hrdp, *trdp, *rdp; |
struct rcs_delta *hrdp, *trdp, *rdp; |
|
|
nextroot += 2; |
nextroot += 2; |
rcsnum_cpy(frev, bnum, nextroot); |
rcsnum_cpy(frev, bnum, nextroot); |
|
|
|
/* XXX strange loop and "found" set but not used */ |
TAILQ_FOREACH(brp, &(rdp->rd_branches), rb_list) { |
TAILQ_FOREACH(brp, &(rdp->rd_branches), rb_list) { |
found = 1; |
found = 1; |
for (i = 0; i < nextroot - 1; i++) { |
for (i = 0; i < nextroot - 1; i++) { |
|
|
{ |
{ |
int kwtype; |
int kwtype; |
u_int j, found; |
u_int j, found; |
u_char *c, *kwstr, *start, *end, *fin; |
const u_char *c, *start, *fin, *end; |
|
char *kwstr; |
char expbuf[256], buf[256]; |
char expbuf[256], buf[256]; |
char *fmt; |
char *fmt; |
size_t len, kwlen; |
size_t len, kwlen; |
|
|
tmpbuf = cvs_buf_alloc(len + strlen(expbuf), BUF_AUTOEXT); |
tmpbuf = cvs_buf_alloc(len + strlen(expbuf), BUF_AUTOEXT); |
/* Append everything before keyword. */ |
/* Append everything before keyword. */ |
cvs_buf_append(tmpbuf, line->l_line, |
cvs_buf_append(tmpbuf, line->l_line, |
start - (unsigned char *)line->l_line); |
start - line->l_line); |
/* Append keyword. */ |
/* Append keyword. */ |
cvs_buf_append(tmpbuf, expbuf, strlen(expbuf)); |
cvs_buf_append(tmpbuf, expbuf, strlen(expbuf)); |
/* Point c to end of keyword. */ |
/* Point c to end of keyword. */ |
tlen = cvs_buf_len(tmpbuf) - 1; |
tlen = cvs_buf_len(tmpbuf) - 1; |
/* Append everything after keyword. */ |
/* Append everything after keyword. */ |
cvs_buf_append(tmpbuf, end, |
cvs_buf_append(tmpbuf, end, |
((unsigned char *)line->l_line + line->l_len) - end); |
line->l_line + line->l_len - end); |
c = cvs_buf_get(tmpbuf) + tlen; |
c = cvs_buf_get(tmpbuf) + tlen; |
/* Point fin to end of data. */ |
/* Point fin to end of data. */ |
fin = cvs_buf_get(tmpbuf) + cvs_buf_len(tmpbuf) - 1; |
fin = cvs_buf_get(tmpbuf) + cvs_buf_len(tmpbuf) - 1; |