version 1.131, 2006/03/05 14:18:56 |
version 1.132, 2006/03/05 16:06:59 |
|
|
op = *(lp->l_line); |
op = *(lp->l_line); |
lineno = (int)strtol((lp->l_line + 1), &ep, 10); |
lineno = (int)strtol((lp->l_line + 1), &ep, 10); |
if ((lineno > dlines->l_nblines) || (lineno < 0) || |
if ((lineno > dlines->l_nblines) || (lineno < 0) || |
(*ep != ' ')) { |
(*ep != ' ')) |
cvs_log(LP_ERR, |
fatal("invalid line specification in RCS patch"); |
"invalid line specification in RCS patch"); |
|
return (-1); |
|
} |
|
ep++; |
ep++; |
nbln = (int)strtol(ep, &ep, 10); |
nbln = (int)strtol(ep, &ep, 10); |
if ((nbln < 0) || (*ep != '\0')) { |
if ((nbln < 0) || (*ep != '\0')) |
cvs_log(LP_ERR, |
fatal("invalid line number specification in RCS patch"); |
"invalid line number specification in RCS patch"); |
|
return (-1); |
|
} |
|
|
|
/* find the appropriate line */ |
/* find the appropriate line */ |
for (;;) { |
for (;;) { |
|
|
dlp = ndlp; |
dlp = ndlp; |
} |
} |
} |
} |
if (dlp == NULL) { |
if (dlp == NULL) |
cvs_log(LP_ERR, |
fatal("can't find referenced line in RCS patch"); |
"can't find referenced line in RCS patch"); |
|
return (-1); |
|
} |
|
|
|
if (op == 'd') { |
if (op == 'd') { |
for (i = 0; (i < nbln) && (dlp != NULL); i++) { |
for (i = 0; (i < nbln) && (dlp != NULL); i++) { |
|
|
for (i = 0; i < nbln; i++) { |
for (i = 0; i < nbln; i++) { |
ndlp = lp; |
ndlp = lp; |
lp = TAILQ_NEXT(lp, l_list); |
lp = TAILQ_NEXT(lp, l_list); |
if (lp == NULL) { |
if (lp == NULL) |
cvs_log(LP_ERR, "truncated RCS patch"); |
fatal("truncated RCS patch"); |
return (-1); |
|
} |
|
TAILQ_REMOVE(&(plines->l_lines), lp, l_list); |
TAILQ_REMOVE(&(plines->l_lines), lp, l_list); |
TAILQ_INSERT_AFTER(&(dlines->l_lines), dlp, |
TAILQ_INSERT_AFTER(&(dlines->l_lines), dlp, |
lp, l_list); |
lp, l_list); |
|
|
|
|
lp = ndlp; |
lp = ndlp; |
} |
} |
} else { |
} else |
cvs_log(LP_ERR, "unknown RCS patch operation `%c'", op); |
fatal("unknown RCS patch operation `%c'", op); |
return (-1); |
|
} |
|
|
|
/* last line of the patch, done */ |
/* last line of the patch, done */ |
if (lp->l_lineno == plines->l_nblines) |
if (lp->l_lineno == plines->l_nblines) |