repos/stagit

fork of stagit, a static git page generator
Commits Files Refs README LICENSE
commit 84c8fcef4fd1c96cc6c20696d7bbcc8bc0066ea3
parent b81244dfda9a44291d31199c983b86008d08cdd8
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Fri,  4 Sep 2026 21:09:02 -0300

If file is binary do not show line numbers checkbox

Diffstat:
Mstagit.c | 14++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/stagit.c b/stagit.c
@@ -1080,7 +1080,7 @@ writeblob(git_object *obj, const char *fpath, const char *rpath, const char *fil
 {
     char tmp[PATH_MAX] = "", *file_parent;
     const char *p, *oldrelpath;
-    int lc = 0;
+    int lc = 0, isbin;
     FILE *fp;
 
     mkdirfile(fpath);
@@ -1088,6 +1088,8 @@ writeblob(git_object *obj, const char *fpath, const char *rpath, const char *fil
     if (strlcpy(tmp, fpath, sizeof(tmp)) >= sizeof(tmp))
         errx(1, "path truncated: '%s'", fpath);
 
+    isbin = git_blob_is_binary((git_blob *)obj);
+
     file_parent = strrchr(tmp, '/');
     for (p = fpath, tmp[0] = '\0'; *p; p++) {
         if (*p == '/' && strlcat(tmp, "../", sizeof(tmp)) >= sizeof(tmp))
@@ -1116,6 +1118,7 @@ writeblob(git_object *obj, const char *fpath, const char *rpath, const char *fil
               "function toggleLineNumbers() {"
               "  var lines = document.querySelectorAll('.line');"
               "  var lineCheckbox = document.getElementById('line-checkbox');"
+              "  if (!lineCheckbox) return;"
 
               "  lines.forEach(function(element) {"
               "    if (lineCheckbox.checked) {"
@@ -1128,6 +1131,7 @@ writeblob(git_object *obj, const char *fpath, const char *rpath, const char *fil
               "}"
           "function setCheckboxState() {"
           "  var lineCheckbox = document.getElementById('line-checkbox');"
+          "  if (!lineCheckbox) return;"
           "  var savedState = localStorage.getItem('line-checkbox');"
           "    if (savedState !== null) {"
           "      lineCheckbox.checked = savedState === 'true';"
@@ -1149,9 +1153,11 @@ writeblob(git_object *obj, const char *fpath, const char *rpath, const char *fil
     xmlencode(fp, filename, strlen(filename));
     fprintf(fp, " (%zuB)</div>\n\n", filesize);
 
-    fputs("<div id=\"line-checkbox-div\"><input type=\"checkbox\""
-        "id=\"line-checkbox\" onchange=\"toggleLineNumbers()\" checked>", fp);
-    fputs("<label for=\"line-checkbox\">Line numbers</label></div>", fp);
+    if (!isbin) {
+        fputs("<div id=\"line-checkbox-div\"><input type=\"checkbox\""
+            "id=\"line-checkbox\" onchange=\"toggleLineNumbers()\" checked>", fp);
+        fputs("<label for=\"line-checkbox\">Line numbers</label></div>", fp);
+    }
 
     if (ismarkdownfile(filename)) {
         fputs("<div id=\"md-checkbox-div\"><input type=\"checkbox\""