summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Belfer <arrbee@arrbee.com>2012-03-05 09:30:17 -0800
committerRussell Belfer <rb@github.com>2012-05-02 15:36:38 -0700
commit3fd99be98a91416dae77d65fe593965a0723fa8c (patch)
tree4c23c0a57ac04a0e3f923abb0d35c3958137d170
parent8b2bcfbe68ea9cb8f30018cc2607c9409ecf0fc0 (diff)
downloadlibgit2-3fd99be98a91416dae77d65fe593965a0723fa8c.tar.gz
Convert from strnlen to git_text_is_binary
Since strnlen is not supported on all platforms and since we now have the shiny new git_text_is_binary in the filtering code, let's convert diff binary detection to use the new stuff.
-rw-r--r--src/diff_output.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/diff_output.c b/src/diff_output.c
index ee18ea6e7..13963faf8 100644
--- a/src/diff_output.c
+++ b/src/diff_output.c
@@ -13,6 +13,7 @@
#include "diff.h"
#include "map.h"
#include "fileops.h"
+#include "filter.h"
typedef struct {
git_diff_list *diff;
@@ -173,19 +174,30 @@ static int file_is_binary_by_content(
git_map *old_data,
git_map *new_data)
{
+ git_buf search;
+ git_text_stats stats;
+
GIT_UNUSED(diff);
if ((delta->old_file.flags & BINARY_DIFF_FLAGS) == 0) {
- size_t search_len = min(old_data->len, 4000);
- if (strnlen(old_data->data, search_len) != search_len)
+ search.ptr = old_data->data;
+ search.size = min(old_data->len, 4000);
+
+ git_text_gather_stats(&stats, &search);
+
+ if (git_text_is_binary(&stats))
delta->old_file.flags |= GIT_DIFF_FILE_BINARY;
else
delta->old_file.flags |= GIT_DIFF_FILE_NOT_BINARY;
}
if ((delta->new_file.flags & BINARY_DIFF_FLAGS) == 0) {
- size_t search_len = min(new_data->len, 4000);
- if (strnlen(new_data->data, search_len) != search_len)
+ search.ptr = new_data->data;
+ search.size = min(new_data->len, 4000);
+
+ git_text_gather_stats(&stats, &search);
+
+ if (git_text_is_binary(&stats))
delta->new_file.flags |= GIT_DIFF_FILE_BINARY;
else
delta->new_file.flags |= GIT_DIFF_FILE_NOT_BINARY;