add test117

fix patience crash: iron out overlapping identical-blocks on the right

remove stray blank line

patience debug

patience comments

cosmetic: patience: use local var 'r' for right atom

cosmetic: rename local var from 'r' to 'rc'

debug fix in diff_data_init_subsection

debug: fix missing quote

debug init subsection

debug fix after changing result->left,right to pointers

allow diff API users to atomize files separately This is a breaking API change (not that we care about that at this point). This can avoid redundant work spent on atomizing a file multiple times. There are use cases where one particular file must be compared to other files over and over again, such as when blaming file history. The old API gave access to both versions of the file to the atomizer just in case a future atomizer implementation needs this. This can still be achieved by passing a second file via the atomizer's private data pointer.

C++ function prototype support based on OpenBSD's diff(1) code

optimize diff_atom_same(): if hashes differ, return false

reflect ignore-whitespace in atom hash

patience: use qsort

patience: optimize: less diff_atom_cmp() via hash

fix patience iteration error; also makes dramatically faster

debug: patience: mark unique debug

diff_atom_cmp: no special case for ignore whitespace when both atoms empty

debug fix: missing space

cache kd_buf in struct diff_state to avoid repeated allocation + free

fix build with PROFILE=1

patience: make it easy to switch impls for mark_unique