summaryrefslogtreecommitdiff
path: root/src/diff_output.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-01-11 11:24:26 -0800
committerRussell Belfer <rb@github.com>2013-01-11 11:24:26 -0800
commit0d65acade84a5ff2421cd52de82a8963f004d481 (patch)
tree5c1f0ba04710e32642e32a4cadf7a8e14dc0aba6 /src/diff_output.c
parentd0b14cea0e1ff09af83a801c1a9cf1a431d46d0c (diff)
downloadlibgit2-0d65acade84a5ff2421cd52de82a8963f004d481.tar.gz
Match binary file check of core git in diff
Core git just looks for NUL bytes in files when deciding about is-binary inside diff (although it uses a better algorithm in checkout, when deciding if CRLF conversion should be done). Libgit2 was using the better algorithm in both places, but that is causing some confusion. For now, this makes diff just look for NUL bytes to decide if a file is binary by content in diff.
Diffstat (limited to 'src/diff_output.c')
-rw-r--r--src/diff_output.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/diff_output.c b/src/diff_output.c
index f98665dfb..dcff78871 100644
--- a/src/diff_output.c
+++ b/src/diff_output.c
@@ -142,7 +142,12 @@ static int diff_delta_is_binary_by_content(
GIT_UNUSED(ctxt);
if ((file->flags & KNOWN_BINARY_FLAGS) == 0) {
- if (git_buf_text_is_binary(&search))
+ /* TODO: provide encoding / binary detection callbacks that can
+ * be UTF-8 aware, etc. For now, instead of trying to be smart,
+ * let's just use the simple NUL-byte detection that core git uses.
+ */
+ /* previously was: if (git_buf_text_is_binary(&search)) */
+ if (git_buf_text_contains_nul(&search))
file->flags |= GIT_DIFF_FILE_BINARY;
else
file->flags |= GIT_DIFF_FILE_NOT_BINARY;