mirror of
https://git.zx2c4.com/cgit
synced 2025-06-28 04:20:10 +02:00
Handle binary files in diffs
This teaches all diff-related operations (i.e. ui-log, ui-diff and ui-patch) how to handle binary files. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
parent
d6174b7aab
commit
c495cf02ba
5 changed files with 52 additions and 7 deletions
13
shared.c
13
shared.c
|
@ -257,8 +257,8 @@ int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
|
|||
}
|
||||
|
||||
int cgit_diff_files(const unsigned char *old_sha1,
|
||||
const unsigned char *new_sha1,
|
||||
linediff_fn fn)
|
||||
const unsigned char *new_sha1, unsigned long *old_size,
|
||||
unsigned long *new_size, int *binary, linediff_fn fn)
|
||||
{
|
||||
mmfile_t file1, file2;
|
||||
xpparam_t diff_params;
|
||||
|
@ -268,6 +268,15 @@ int cgit_diff_files(const unsigned char *old_sha1,
|
|||
if (!load_mmfile(&file1, old_sha1) || !load_mmfile(&file2, new_sha1))
|
||||
return 1;
|
||||
|
||||
*old_size = file1.size;
|
||||
*new_size = file2.size;
|
||||
|
||||
if (buffer_is_binary(file1.ptr, file1.size) ||
|
||||
buffer_is_binary(file2.ptr, file2.size)) {
|
||||
*binary = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
memset(&diff_params, 0, sizeof(diff_params));
|
||||
memset(&emit_params, 0, sizeof(emit_params));
|
||||
memset(&emit_cb, 0, sizeof(emit_cb));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue