Line numbers on blob pages - stagit-gopher - A git gopher frontend. (mirror)
git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/
Log
Files
Refs
Tags
README
LICENSE
---
commit 0a4451bc150154cfb0390f242860d4b66930e1bd
parent 3f77fb211d696b8d768fdd1f0a015cde3faa6cfe
Author: Eivind Uggedal 
Date:   Thu, 10 Dec 2015 22:24:18 +0000

Line numbers on blob pages

Diffstat:
  M style.css                           |      15 ++++++++++++++-
  M urmoms.c                            |      29 ++++++++++++++++++++++++-----

2 files changed, 38 insertions(+), 6 deletions(-)
---
diff --git a/style.css b/style.css
@@ -21,6 +21,15 @@ a:hover {
         text-decoration: underline;
 }
 
+#blob a {
+        color: #777;
+}
+
+#blob a:hover {
+        color: blue;
+        text-decoration: none;
+}
+
 table thead td {
         font-weight: bold;
 }
@@ -29,10 +38,14 @@ table td {
         padding: 0 0.4em;
 }
 
-#content table tr:hover td {
+#log tr:hover td, #files tr:hover td {
         background-color: #eee;
 }
 
+td.num {
+        text-align: right;
+}
+
 .desc {
         color: #777;
 }
diff --git a/urmoms.c b/urmoms.c
@@ -241,7 +241,28 @@ printtimeshort(FILE *fp, const git_time *intime)
 void
 writeblobhtml(FILE *fp, const git_blob *blob)
 {
-        xmlencode(fp, git_blob_rawcontent(blob), (size_t)git_blob_rawsize(blob));
+        off_t i = 0;
+        size_t n = 1;
+        char *nfmt = "%d\n";
+        const char *s = git_blob_rawcontent(blob);
+        git_off_t len = git_blob_rawsize(blob);
+
+        fputs("
\n", fp);
+
+        if (len) {
+                fprintf(fp, nfmt, n, n, n);
+                while (i < len - 1) {
+                        if (s[i] == '\n') {
+                                n++;
+                                fprintf(fp, nfmt, n, n, n);
+                        }
+                        i++;
+                }
+        }
+
+        fputs("
\n", fp);
+        xmlencode(fp, s, (size_t)len);
+        fputs("
\n", fp); } void @@ -392,7 +413,7 @@ writelog(FILE *fp) git_revwalk_simplify_first_parent(w); /* TODO: also make "expanded" log ? (with message body) */ - fputs("\n" + fputs("
AgeCommit messageAuthor
\n" "\n\n", fp); while (!git_revwalk_next(&id, w)) { relpath = ""; @@ -553,11 +574,9 @@ writeblob(const git_index_entry *entry) if (git_blob_is_binary((git_blob *)obj)) { fprintf(fp, "

Binary file

\n"); } else { - fputs("
\n", fp);
                 writeblobhtml(fp, (git_blob *)obj);
                 if (ferror(fp))
                         err(1, "fwrite");
-                fputs("
\n", fp); } git_object_free(obj); writefooter(fp); @@ -575,7 +594,7 @@ writefiles(FILE *fp) git_index *index; size_t count, i; - fputs("
AgeCommit messageAuthorFiles+-
\n" + fputs("
\n" "\n" "\n", fp);
ModeNameSize