47 #include <apr_pools.h>
48 #include <apr_tables.h>
118 svn_error_t *(*datasource_get_next_token)(apr_uint32_t *hash,
void **token,
225 apr_off_t original_start,
226 apr_off_t original_length,
227 apr_off_t modified_start,
228 apr_off_t modified_length,
229 apr_off_t latest_start,
230 apr_off_t latest_length);
244 apr_off_t original_start,
245 apr_off_t original_length,
246 apr_off_t modified_start,
247 apr_off_t modified_length,
248 apr_off_t latest_start,
249 apr_off_t latest_length);
258 apr_off_t original_start,
259 apr_off_t original_length,
260 apr_off_t modified_start,
261 apr_off_t modified_length,
262 apr_off_t latest_start,
263 apr_off_t latest_length);
270 apr_off_t original_start,
271 apr_off_t original_length,
272 apr_off_t modified_start,
273 apr_off_t modified_length,
274 apr_off_t latest_start,
275 apr_off_t latest_length);
287 apr_off_t original_start,
288 apr_off_t original_length,
289 apr_off_t modified_start,
290 apr_off_t modified_length,
291 apr_off_t latest_start,
292 apr_off_t latest_length,
405 const apr_array_header_t *args,
421 const char *original,
422 const char *modified,
434 const char *original,
435 const char *modified,
450 const char *original,
451 const char *modified,
464 const char *original,
465 const char *modified,
481 const char *original,
482 const char *modified,
484 const char *ancestor,
496 const char *original,
497 const char *modified,
499 const char *ancestor,
523 const char *original_path,
524 const char *modified_path,
525 const char *original_header,
526 const char *modified_header,
527 const char *header_encoding,
528 const char *relative_to_dir,
541 const char *original_path,
542 const char *modified_path,
543 const char *original_header,
544 const char *modified_header,
545 const char *header_encoding,
557 const char *original_path,
558 const char *modified_path,
559 const char *original_header,
560 const char *modified_header,
580 const char *original_path,
581 const char *modified_path,
582 const char *latest_path,
583 const char *conflict_original,
584 const char *conflict_modified,
585 const char *conflict_latest,
586 const char *conflict_separator,
609 const char *original_path,
610 const char *modified_path,
611 const char *latest_path,
612 const char *conflict_original,
613 const char *conflict_modified,
614 const char *conflict_latest,
615 const char *conflict_separator,
679 const char *original_header,
680 const char *modified_header,
681 const char *header_encoding,
704 const char *conflict_original,
705 const char *conflict_modified,
706 const char *conflict_latest,
707 const char *conflict_separator,
732 const char *conflict_original,
733 const char *conflict_modified,
734 const char *conflict_latest,
735 const char *conflict_separator,
Options to control the behaviour of the file diff routines.
Counted-length strings for Subversion, plus some C string goodies.
A vtable for displaying (or consuming) differences between datasources.
svn_error_t * svn_diff_mem_string_diff(svn_diff_t **diff, const svn_string_t *original, const svn_string_t *modified, const svn_diff_file_options_t *options, apr_pool_t *pool)
Generate diff output from the original and modified in-memory strings.
Ignore changes in sequences of whitespace characters, treating each sequence of whitespace characters...
svn_boolean_t ignore_eol_style
Whether to treat all end-of-line markers the same when comparing lines.
struct svn_diff_t svn_diff_t
An opaque type that represents a difference between either two or three datasources.
svn_error_t * svn_diff_file_options_parse(svn_diff_file_options_t *options, const apr_array_header_t *args, apr_pool_t *pool)
Parse args, an array of const char * command line switches and adjust options accordingly.
svn_boolean_t show_c_function
Whether the '@' lines of the unified diff output should include a prefix of the nearest preceding lin...
svn_error_t * svn_diff_diff(svn_diff_t **diff, void *diff_baton, const svn_diff_fns_t *diff_fns, apr_pool_t *pool)
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that rep...
Display modified and latest, with conflict markers.
Display modified, original, and latest, with conflict markers.
General file I/O for Subversion.
svn_diff_file_ignore_space_t ignore_space
To what extent whitespace should be ignored when comparing lines.
struct svn_diff_output_fns_t svn_diff_output_fns_t
A vtable for displaying (or consuming) differences between datasources.
svn_diff_datasource_e
There are four types of datasources.
svn_error_t * svn_diff_mem_string_output_merge(svn_stream_t *output_stream, svn_diff_t *diff, const svn_string_t *original, const svn_string_t *modified, const svn_string_t *latest, const char *conflict_original, const char *conflict_modified, const char *conflict_latest, const char *conflict_separator, svn_boolean_t display_original_in_conflict, svn_boolean_t display_resolved_conflicts, apr_pool_t *pool)
Similar to svn_diff_mem_string_output_merge2, but with display_original_in_conflict and display_resol...
Just display modified, with no markers.
The common ancestor of original and modified.
svn_error_t * svn_diff_file_output_unified3(svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *original_header, const char *modified_header, const char *header_encoding, const char *relative_to_dir, svn_boolean_t show_c_function, apr_pool_t *pool)
A convenience function to produce unified diff output from the diff generated by svn_diff_file_diff()...
svn_error_t * svn_diff_file_output_merge2(svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *latest_path, const char *conflict_original, const char *conflict_modified, const char *conflict_latest, const char *conflict_separator, svn_diff_conflict_display_style_t conflict_style, apr_pool_t *pool)
A convenience function to produce diff3 output from the diff generated by svn_diff_file_diff3().
const svn_version_t * svn_diff_version(void)
Get libsvn_diff version information.
struct svn_diff_file_options_t svn_diff_file_options_t
Options to control the behaviour of the file diff routines.
svn_error_t * svn_diff_file_output_unified(svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *original_header, const char *modified_header, apr_pool_t *pool)
Similar to svn_diff_file_output_unified2(), but with header_encoding set to APR_LOCALE_CHARSET.
svn_error_t * svn_diff_mem_string_output_unified(svn_stream_t *output_stream, svn_diff_t *diff, const char *original_header, const char *modified_header, const char *header_encoding, const svn_string_t *original, const svn_string_t *modified, apr_pool_t *pool)
Outputs the diff object generated by svn_diff_mem_string_diff() in unified diff format on output_stre...
svn_diff_file_ignore_space_t
To what extent whitespace should be ignored when comparing lines.
struct svn_diff_fns_t svn_diff_fns_t
A vtable for reading data from the three datasources.
svn_boolean_t svn_diff_contains_conflicts(svn_diff_t *diff)
Determine if a diff object contains conflicts.
The latest version of the data, possibly different than the user's modified version.
svn_error_t * svn_diff_diff3(svn_diff_t **diff, void *diff_baton, const svn_diff_fns_t *diff_fns, apr_pool_t *pool)
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that rep...
svn_error_t * svn_diff_mem_string_diff3(svn_diff_t **diff, const svn_string_t *original, const svn_string_t *modified, const svn_string_t *latest, const svn_diff_file_options_t *options, apr_pool_t *pool)
Generate diff output from the orginal, modified and latest in-memory strings.
svn_error_t * svn_diff_mem_string_output_merge2(svn_stream_t *output_stream, svn_diff_t *diff, const svn_string_t *original, const svn_string_t *modified, const svn_string_t *latest, const char *conflict_original, const char *conflict_modified, const char *conflict_latest, const char *conflict_separator, svn_diff_conflict_display_style_t style, apr_pool_t *pool)
Output the diff generated by svn_diff_mem_string_diff3() in diff3 format on output_stream, using original, modified and latest for content changes.
svn_error_t * svn_diff_file_diff(svn_diff_t **diff, const char *original, const char *modified, apr_pool_t *pool)
Similar to svn_file_diff_2(), but with options set to a struct with default options.
svn_error_t * svn_diff_file_diff_2(svn_diff_t **diff, const char *original, const char *modified, const svn_diff_file_options_t *options, apr_pool_t *pool)
A convenience function to produce a diff between two files.
Just display latest, with no markers.
struct svn_stream_t svn_stream_t
An abstract stream of bytes–either incoming or outgoing or both.
svn_error_t * svn_diff_output(svn_diff_t *diff, void *output_baton, const svn_diff_output_fns_t *output_fns)
Given a vtable of output_fns/output_baton for consuming differences, output the differences in diff...
svn_error_t * svn_diff_file_output_merge(svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *latest_path, const char *conflict_original, const char *conflict_modified, const char *conflict_latest, const char *conflict_separator, svn_boolean_t display_original_in_conflict, svn_boolean_t display_resolved_conflicts, apr_pool_t *pool)
Similar to svn_diff_file_output_merge2, but with display_original_in_conflict and display_resolved_co...
Like svn_diff_conflict_display_modified_latest, but with an extra effort to identify common sequences...
svn_error_t * svn_diff_mem_string_diff4(svn_diff_t **diff, const svn_string_t *original, const svn_string_t *modified, const svn_string_t *latest, const svn_string_t *ancestor, const svn_diff_file_options_t *options, apr_pool_t *pool)
Generate diff output from the original, modified and latest in-memory strings, using ancestor...
void(* token_discard)(void *diff_baton, void *token)
Free token from memory, the diff algorithm is done with it.
#define SVN_DEPRECATED
Macro used to mark deprecated functions.
void(* token_discard_all)(void *diff_baton)
Free all tokens from memory, they're no longer needed.
svn_error_t * svn_diff_file_diff3_2(svn_diff_t **diff, const char *original, const char *modified, const char *latest, const svn_diff_file_options_t *options, apr_pool_t *pool)
A convenience function to produce a diff between three files.
svn_diff_file_options_t * svn_diff_file_options_create(apr_pool_t *pool)
Allocate a svn_diff_file_options_t structure in pool, initializing it with default values...
svn_boolean_t svn_diff_contains_diffs(svn_diff_t *diff)
Determine if a diff object contains actual differences between the datasources.
svn_error_t * svn_diff_file_output_unified2(svn_stream_t *output_stream, svn_diff_t *diff, const char *original_path, const char *modified_path, const char *original_header, const char *modified_header, const char *header_encoding, apr_pool_t *pool)
Similar to svn_diff_file_output_unified3(), but with relative_to_dir set to NULL and show_c_function ...
A vtable for reading data from the three datasources.
svn_error_t * svn_diff_file_diff4_2(svn_diff_t **diff, const char *original, const char *modified, const char *latest, const char *ancestor, const svn_diff_file_options_t *options, apr_pool_t *pool)
A convenience function to produce a diff between four files.
Like svn_diff_conflict_display_modified_original_latest, but only* showing conflicts.
Ignore all whitespace characters.
The oldest form of the data.
svn_error_t * svn_diff_file_diff4(svn_diff_t **diff, const char *original, const char *modified, const char *latest, const char *ancestor, apr_pool_t *pool)
Simliar to svn_file_diff4_2(), but with options set to a struct with default options.
int svn_boolean_t
YABT: Yet Another Boolean Type.
The same data, but potentially changed by the user.
svn_error_t * svn_diff_file_diff3(svn_diff_t **diff, const char *original, const char *modified, const char *latest, apr_pool_t *pool)
Similar to svn_diff_file_diff3_2(), but with options set to a struct with default options...
svn_error_t * svn_diff_diff4(svn_diff_t **diff, void *diff_baton, const svn_diff_fns_t *diff_fns, apr_pool_t *pool)
Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object in *diff that rep...
svn_diff_conflict_display_style_t
Style for displaying conflicts during diff3 output.