X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/d1f3bbe9d22029f45a77bb938c176ccc0c827d46..d6174b7aab476c2b6a86e59d98cf978d603045f4:/ui-tree.c diff --git a/ui-tree.c b/ui-tree.c index df05ad3..c26ba4c 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -7,6 +7,8 @@ */ #include "cgit.h" +#include "html.h" +#include "ui-shared.h" char *curr_rev; char *match_path; @@ -16,8 +18,8 @@ static void print_object(const unsigned char *sha1, char *path) { enum object_type type; char *buf; - unsigned long size, lineno, start, idx; - const char *linefmt = "%1$d"; + unsigned long size, lineno, idx; + const char *numberfmt = "%1$d\n"; type = sha1_object_info(sha1, &size); if (type == OBJ_BAD) { @@ -33,33 +35,38 @@ static void print_object(const unsigned char *sha1, char *path) return; } - html(" blob: %s",sha1_to_hex(sha1)); + html(" ("); + cgit_plain_link("plain", NULL, NULL, ctx.qry.head, + curr_rev, path); + htmlf(")
blob: %s\n", sha1_to_hex(sha1)); html("\n"); + html("\n"); + + html("\n"); - start = idx + 1; + htmlf(numberfmt, ++lineno); } idx++; } - htmlf(linefmt, ++lineno); - html_txt(buf + start); - html("\n"); + html("\n"); + + html("\n"); + + html("\n"); html("
");
 	idx = 0;
-	start = 0;
 	lineno = 0;
-	while(idx < size) {
+	htmlf(numberfmt, ++lineno);
+	while(idx < size - 1) { // skip absolute last newline
 		if (buf[idx] == '\n') {
-			buf[idx] = '\0';
-			htmlf(linefmt, ++lineno);
-			html_txt(buf + start);
-			html("
");
+	html_txt(buf);
+	html("
\n"); } static int ls_item(const unsigned char *sha1, const char *base, int baselen, - const char *pathname, unsigned int mode, int stage) + const char *pathname, unsigned int mode, int stage, + void *cbdata) { char *name; char *fullpath; @@ -70,16 +77,18 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, fullpath = fmt("%s%s%s", ctx.qry.path ? ctx.qry.path : "", ctx.qry.path ? "/" : "", name); - type = sha1_object_info(sha1, &size); - if (type == OBJ_BAD && !S_ISGITLINK(mode)) { - htmlf("Bad object: %s %s", - name, - sha1_to_hex(sha1)); - return 0; + if (!S_ISGITLINK(mode)) { + type = sha1_object_info(sha1, &size); + if (type == OBJ_BAD) { + htmlf("Bad object: %s %s", + name, + sha1_to_hex(sha1)); + return 0; + } } html(""); - html_filemode(mode); + cgit_print_filemode(mode); html(""); if (S_ISGITLINK(mode)) { htmlf("