login

<     >

2022-02-27 12:48:17 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

don't show content of binary files

diff --git a/git.lua b/git.lua
index 5b7e399..b16ff24 100644
--- a/git.lua
+++ b/git.lua
@@ -138,6 +138,7 @@ int git_tree_entry_bypath(git_tree_entry **out, const git_tree *root, const char
 int git_tree_entry_to_object(git_object **object_out, git_repository *repo, const git_tree_entry *entry);
 void git_tree_entry_free(git_tree_entry *entry);
 
+int git_blob_is_binary(const git_blob *blob);
 git_object_size_t git_blob_rawsize(const git_blob *blob);
 const void * git_blob_rawcontent(const git_blob *blob);
 
@@ -238,7 +239,8 @@ function Commit:node(entry)
     elseif entry_type == 3 then
         local blob = ffi.cast("git_blob *", pobj[0])
         local data = ffi.string(C.git_blob_rawcontent(blob), C.git_blob_rawsize(blob))
-        return {type_="file", name=name, data=data}
+        local bin = C.git_blob_is_binary(blob) ~= 0
+        return {type_="file", name=name, data=data, bin=bin}
     else
         return nil
     end

diff --git a/view/file.html b/view/file.html
index b04ebf8..3312403 100644
--- a/view/file.html
+++ b/view/file.html
@@ -22,6 +22,10 @@
     <a href="{{$partial}}">{{$part}}</a>
     % end
   </p>
+  % if $node.bin then
+  <p><em>binary file</em></p>
+  % else
   <pre>{{!$node.data}}</pre>
+  % end
 </body>
 </html>