• Jeff King's avatar
    xdiff: provide a separate emit callback for hunks · 611e42a5
    Jeff King authored
    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
      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
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
xutils.c 9.68 KB