Commits


remove a bunch of overly verbose debug


cache kd_buf in struct diff_state to avoid repeated allocation + free


fix myers_divide max-effort cut, wrong x for backwards coordinate


debug output fixes - fix compilation error with DEBUG 1, after moving patience state out of diff_atom, and after renaming diff_data.d to diff_data.root. - add some missing newlines. - also debug "HIT" on a max-effort cut, like when finding a mid snake, which eases finding all the places where boxes get cut.


diff_myers: fix some uninitialized warnings


myers_divide: fix "inifite" looping over same box


debug: diff_myers.c: #if DEBUG, not if (DEBUG)


debug: fix "state size:" printing buf size


drop dangerous debug statement


move headers from include/diff/ to include/; makes things easier for consumers


repair DEBUG build


move some definitions from the public diff_main.h to an internal header file


use buffered stdio if falling back on file i/o; this is much faster


rename 'debug.h' to 'diff_debug.h'


myers_divide: stop traversing snakes after reasonable max effort


myers: error handling from diff_atoms_same()


add diff_atom_cmp() and error handling to diff_atom_same()


avoid include statements in header files; make each .c pull in what's needed


replace enum diff_rc errors with plain errno values


KNF: use max 80 columns


KNF: function declaration return types on separate line


fix myers divide: properly trigger division on single midpoints


debug: myers divide: log nr of identical lines slid over


fix diff_algo_myers_divide's finding of midpoints When forwards and backwards traversals meet, the endpoints of the mid-snake are not the two points in kd_forward and kd_backward, but rather the section that was slid (if any) of the current forward/backward traversal only. For example: o-o-o | | o A | \ o o \ M |\ o o-o-o | | | o o X \ o \ o \ o The backward traversal reached M from the bottom and slid upwards. The forward traversal already reached X, which is not a straight line from M anymore, so picking a mid-snake from M to X would yield a mistake. The correct mid-snake is between M and A. M is where the bottom traversal hit the diagonal that the forwards traversal has already passed, and A is what it reaches when sliding up identical lines.


debug: myers graph dump tweaks In debug output: fix some indents, fix printing of max state size, in myers graph, limit x axis labels to 2 digits, print colored markers of current myers graph positions, also print myers-divide positions in myers graph.