1060 |
1060 |
1061 |
1061 |
1062 static int xdl_call_hunk_func(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb, |
1062 static int xdl_call_hunk_func(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb, |
1063 xdemitconf_t const *xecfg) |
1063 xdemitconf_t const *xecfg) |
1064 { |
1064 { |
|
1065 long p = xe->nprefix, s = xe->nsuffix; |
1065 xdchange_t *xch, *xche; |
1066 xdchange_t *xch, *xche; |
1066 |
1067 |
1067 if (!xecfg->hunk_func) |
1068 if (!xecfg->hunk_func) |
1068 return -1; |
1069 return -1; |
1069 |
1070 |
1071 long i1 = 0, i2 = 0, n1 = xe->xdf1.nrec, n2 = xe->xdf2.nrec; |
1072 long i1 = 0, i2 = 0, n1 = xe->xdf1.nrec, n2 = xe->xdf2.nrec; |
1072 for (xch = xscr; xch; xch = xche->next) { |
1073 for (xch = xscr; xch; xch = xche->next) { |
1073 xche = xdl_get_hunk(&xch, xecfg); |
1074 xche = xdl_get_hunk(&xch, xecfg); |
1074 if (!xch) |
1075 if (!xch) |
1075 break; |
1076 break; |
|
1077 if (xch != xche) |
|
1078 xdl_bug("xch != xche"); |
|
1079 xch->i1 += p; |
|
1080 xch->i2 += p; |
1076 if (xch->i1 > i1 || xch->i2 > i2) { |
1081 if (xch->i1 > i1 || xch->i2 > i2) { |
1077 if (xecfg->hunk_func(i1, xch->i1, i2, xch->i2, ecb->priv) < 0) |
1082 if (xecfg->hunk_func(i1, xch->i1, i2, xch->i2, ecb->priv) < 0) |
1078 return -1; |
1083 return -1; |
1079 } |
1084 } |
1080 i1 = xche->i1 + xche->chg1; |
1085 i1 = xche->i1 + xche->chg1; |
1081 i2 = xche->i2 + xche->chg2; |
1086 i2 = xche->i2 + xche->chg2; |
1082 } |
1087 } |
1083 if (xecfg->hunk_func(i1, n1, i2, n2, ecb->priv) < 0) |
1088 if (xecfg->hunk_func(i1, n1 + p + s, i2, n2 + p + s, |
|
1089 ecb->priv) < 0) |
1084 return -1; |
1090 return -1; |
1085 } else { |
1091 } else { |
1086 for (xch = xscr; xch; xch = xche->next) { |
1092 for (xch = xscr; xch; xch = xche->next) { |
1087 xche = xdl_get_hunk(&xch, xecfg); |
1093 xche = xdl_get_hunk(&xch, xecfg); |
1088 if (!xch) |
1094 if (!xch) |
1089 break; |
1095 break; |
1090 if (xecfg->hunk_func( |
1096 if (xecfg->hunk_func(xch->i1 + p, |
1091 xch->i1, xche->i1 + xche->chg1 - xch->i1, |
1097 xche->i1 + xche->chg1 - xch->i1, |
1092 xch->i2, xche->i2 + xche->chg2 - xch->i2, |
1098 xch->i2 + p, |
|
1099 xche->i2 + xche->chg2 - xch->i2, |
1093 ecb->priv) < 0) |
1100 ecb->priv) < 0) |
1094 return -1; |
1101 return -1; |
1095 } |
1102 } |
1096 } |
1103 } |
1097 return 0; |
1104 return 0; |