I require a merge/diff3 implementation for use on memory blocks using libsvn_diff (of the subversion project: [url removed, login to view]).
libsvn_diff already provides built-in functions for doing a merge/diff3 on files, using a built-in "handler" (called a diff_fns_t vtable stucture in subversion code). I require this functionality on blocks of memory, and I do not have enough knowlegde of the library's inner workings or of APR to implement this.
The work will be to create this diff_fns_t vtable "handler" for doing the merge/diff3 on memory blocks (as described below), so you should familiarize yourself with the code to see what's involved/needed.
The implementation will need to work the same way as the file functions do. You should be able to use the test cases in the project to verify proper function.
The code will be used in a commercial application, so it must be free of any retricting license or similar restrictions.
Basically something similar to:
const char *original_data, int original_len,
const char *modified_data, int modified_len,
const char *latest_data, int latest_len,
const char *conflict_original,
const char *conflict_modified,
const char *conflict_latest,
const char *conflict_separator,
that would use svn_diff_diff3() and svn_diff_output() subversion functions and behave like svn_diff_file_diff3 and svn_diff_file_output_merge() respectively but operate on data in memory and not on files - input and output data format would be the same (lines of text on input and merged output with conflicts marked as by svn_diff_file_output_merge).