path: root/xdiff-interface.c
diff options
authorJeff King <>2018-11-02 06:35:01 (GMT)
committerJunio C Hamano <>2018-11-02 11:43:02 (GMT)
commit611e42a5980a3a9f8bb3b1b49c1abde63c7a191e (patch)
tree3c3e5ca8edb25cbb1ff14478c3e869d687b5a19e /xdiff-interface.c
parentcae598d9980661a978e2df4fb338518f7bf09572 (diff)
xdiff: provide a separate emit callback for hunks
The xdiff library always emits hunk header lines to our callbacks as formatted strings like "@@ -a,b +c,d @@\n". This is convenient if we're going to output a diff, but less so if we actually need to compute using those numbers, which requires re-parsing the line. In preparation for moving away from this, let's teach xdiff a new callback function which gets the broken-out hunk information. To help callers that don't want to use this new callback, if it's NULL we'll continue to format the hunk header into a string. Note that this function renames the "outf" callback to "out_line", as well. This isn't strictly necessary, but helps in two ways: 1. Now that there are two callbacks, it's nice to use more descriptive names. 2. Many callers did not zero the emit_callback_data struct, and needed to be modified to set ecb.out_hunk to NULL. By changing the name of the existing struct member, that guarantees that any new callers from in-flight topics will break the build and be examined manually. Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'xdiff-interface.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/xdiff-interface.c b/xdiff-interface.c
index ec6e574..88d96d7 100644
--- a/xdiff-interface.c
+++ b/xdiff-interface.c
@@ -152,7 +152,7 @@ int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2,
state.consume = fn;
state.consume_callback_data = consume_callback_data;
memset(&ecb, 0, sizeof(ecb));
- ecb.outf = xdiff_outf;
+ ecb.out_line = xdiff_outf;
ecb.priv = &state;
strbuf_init(&state.remainder, 0);
ret = xdi_diff(mf1, mf2, xpp, xecfg, &ecb);