static int xdl_find_hunk(recfile_t *rf, long ibase, patch_t *pch, int mode, int fuzz, long *hkpos, int *exact) { long hpos, hlen, i, j; long pos[2]; hpos = mode == '-' ? pch->hi.s1: pch->hi.s2; hlen = mode == '-' ? pch->hi.cmn + pch->hi.rdel: pch->hi.cmn + pch->hi.radd; if (xdl_hunk_match(rf, hpos, pch, mode, fuzz)) { *hkpos = hpos; *exact = 1; return 1; } for (i = 1;; i++) { /* * We allow a negative starting hunk position, up to the * number of prefix context lines. */ j = 0; if (hpos - i >= ibase - pch->hi.pctx) pos[j++] = hpos - i; if (hpos + i + hlen <= rf->nrec) pos[j++] = hpos + i; if (!j) break; for (j--; j >= 0; j--) if (xdl_hunk_match(rf, pos[j], pch, mode, fuzz)) { *hkpos = pos[j]; *exact = 0; return 1; } } return 0; }
static int xdl_find_hunk(recfile_t *rf, long ibase, patch_t *pch, int mode, long *hkpos) { long hpos, hlen, i, j; long pos[2]; hpos = mode == '-' ? pch->hi.s1: pch->hi.s2; hlen = mode == '-' ? pch->hi.cmn + pch->hi.rdel: pch->hi.cmn + pch->hi.radd; if (xdl_hunk_match(rf, hpos, pch, mode)) { *hkpos = hpos; return 1; } for (i = 1;; i++) { j = 0; if (hpos - i >= ibase) pos[j++] = hpos - i; if (hpos + i + hlen < rf->nrec) pos[j++] = hpos + i; if (!j) break; for (j--; j >= 0; j--) if (xdl_hunk_match(rf, pos[j], pch, mode)) { *hkpos = pos[j]; return 1; } } return 0; }