]> git.proxmox.com Git - libgit2.git/commitdiff
Convert from strnlen to git_text_is_binary
authorRussell Belfer <arrbee@arrbee.com>
Mon, 5 Mar 2012 17:30:17 +0000 (09:30 -0800)
committerRussell Belfer <arrbee@arrbee.com>
Mon, 5 Mar 2012 17:30:17 +0000 (09:30 -0800)
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.

src/diff_output.c

index 684de0cc47169a28c32e7562f8ce05c64e882d5b..2c6bacc81ec9cff166cf7dcf8b730acf5af92c7a 100644 (file)
@@ -13,6 +13,7 @@
 #include "diff.h"
 #include "map.h"
 #include "fileops.h"
+#include "filter.h"
 
 typedef struct {
        git_diff_list *diff;
@@ -161,19 +162,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;