commit 24b5052ac04dc722cd86b4cd6f4a7142542edb74 from: Stefan Sperling date: Tue Sep 22 18:26:00 2020 UTC add APIs to write out the left and right versions of diff chunks commit - 11caa5ccb607f41d22b4d2a7630952c0cdd08336 commit + 24b5052ac04dc722cd86b4cd6f4a7142542edb74 blob - 7dfc84fa74faeb29413f4a7aacd57215ba15277a blob + b5512c4033d6e6b00e24ff6df424e84189c5a61c --- include/diff/diff_output.h +++ include/diff/diff_output.h @@ -45,3 +45,11 @@ void diff_output_unidiff_chunk(FILE *dest, int diff_output_info(FILE *dest, const struct diff_input_info *info); int diff_output_lines(FILE *dest, const char *prefix, struct diff_atom *start_atom, unsigned int count); +void diff_output_chunk_left_version(FILE *dest, + const struct diff_input_info *info, + const struct diff_result *result, + const struct diff_chunk_context *cc); +void diff_output_chunk_right_version(FILE *dest, + const struct diff_input_info *info, + const struct diff_result *result, + const struct diff_chunk_context *cc); blob - 03a4042d7c614b8d5565ce69f13d39b81da33884 blob + 8ac957ca5b3d57def908e535c7400599c2fd52f8 --- lib/diff_output.c +++ lib/diff_output.c @@ -92,3 +92,46 @@ diff_output_lines(FILE *dest, const char *prefix, stru return 0; } + +void +diff_output_chunk_left_version(FILE *dest, + const struct diff_input_info *info, + const struct diff_result *result, + const struct diff_chunk_context *cc) +{ + int c_idx; + + if (diff_range_empty(&cc->left)) + return; + + /* Write out all chunks on the left side. */ + for (c_idx = cc->chunk.start; c_idx < cc->chunk.end; c_idx++) { + const struct diff_chunk *c = &result->chunks.head[c_idx]; + + if (c->left_count) + diff_output_lines(dest, "", c->left_start, + c->left_count); + } +} + +void +diff_output_chunk_right_version(FILE *dest, + const struct diff_input_info *info, + const struct diff_result *result, + const struct diff_chunk_context *cc) +{ + int c_idx; + + if (diff_range_empty(&cc->right)) + return; + + /* Write out all chunks on the right side. */ + for (c_idx = cc->chunk.start; c_idx < cc->chunk.end; c_idx++) { + const struct diff_chunk *c = &result->chunks.head[c_idx]; + + if (c->right_count) + diff_output_lines(dest, "", c->right_start, + c->right_count); + } +} +