static int xdl_emit_record(xdfile_t *xdf, long ri, char const *pre, xdemitcb_t *ecb) { long size, psize = strlen(pre); char const *rec; size = xdl_get_rec(xdf, ri, &rec); if (xdl_emit_diffrec(rec, size, pre, psize, ecb) < 0) { return -1; } return 0; }
static int xdl_reject_hunk(recfile_t *rf, patch_t *pch, int mode, xdemitcb_t *rjecb, patchstats_t *ps) { long i, size, s1, s2, c1, c2; char const *line, *pre; mmbuffer_t mb; if (mode == '-') { s1 = pch->hi.s1; s2 = pch->hi.s2; c1 = pch->hi.c1; c2 = pch->hi.c2; } else { s1 = pch->hi.s2; s2 = pch->hi.s1; c1 = pch->hi.c2; c2 = pch->hi.c1; } s1 += ps->adds - ps->dels; if (xdl_emit_hunk_hdr(s1 + 1, c1, s2 + 1, c2, rjecb) < 0) { return -1; } for (i = pch->hkrec + 1; (line = xdl_recfile_get(&pch->rf, i, &size)) != NULL; i++) { if (*line == '@' || *line == '\n') break; if (mode == '-' || *line == ' ') { mb.ptr = (char *) line; mb.size = size; if (rjecb->outf(rjecb->priv, &mb, 1) < 0) { return -1; } } else { pre = *line == '+' ? "-": "+"; if (xdl_emit_diffrec(line + 1, size - 1, pre, strlen(pre), rjecb) < 0) { return -1; } } } return 0; }