| #include "cache.h" |
| #include "diff.h" |
| #include "diffcore.h" |
| #include "delta.h" |
| #include "count-delta.h" |
| |
| static int diffcore_count_changes_1(void *src, unsigned long src_size, |
| void *dst, unsigned long dst_size, |
| unsigned long delta_limit, |
| unsigned long *src_copied, |
| unsigned long *literal_added) |
| { |
| void *delta; |
| unsigned long delta_size; |
| |
| delta = diff_delta(src, src_size, |
| dst, dst_size, |
| &delta_size, delta_limit); |
| if (!delta) |
| /* If delta_limit is exceeded, we have too much differences */ |
| return -1; |
| |
| /* Estimate the edit size by interpreting delta. */ |
| if (count_delta(delta, delta_size, src_copied, literal_added)) { |
| free(delta); |
| return -1; |
| } |
| free(delta); |
| return 0; |
| } |
| |
| int diffcore_count_changes(void *src, unsigned long src_size, |
| void *dst, unsigned long dst_size, |
| unsigned long delta_limit, |
| unsigned long *src_copied, |
| unsigned long *literal_added) |
| { |
| return diffcore_count_changes_1(src, src_size, |
| dst, dst_size, |
| delta_limit, |
| src_copied, |
| literal_added); |
| } |