X-Git-Url: https://git.cameronkatri.com/cgit.git/blobdiff_plain/a4d1ca1dc6ff8171694d9e2280b6075a1beced0c..a90e2aa4e1bd5c3a9657ce7d675943f4a265cc9f:/ui-tree.c diff --git a/ui-tree.c b/ui-tree.c index 9be3140..2a8625c 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -18,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) { @@ -35,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; @@ -72,12 +77,14 @@ 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(""); @@ -102,7 +109,7 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, html(""); cgit_log_link("log", NULL, "button", ctx.qry.head, curr_rev, - fullpath, 0, NULL, NULL); + fullpath, 0, NULL, NULL, ctx.qry.showmsg); html("\n"); free(name); return 0; @@ -140,13 +147,14 @@ static void ls_tree(const unsigned char *sha1, char *path) } ls_head(); - read_tree_recursive(tree, "", 0, 1, NULL, ls_item); + read_tree_recursive(tree, "", 0, 1, NULL, ls_item, NULL); ls_tail(); } static int walk_tree(const unsigned char *sha1, const char *base, int baselen, - const char *pathname, unsigned mode, int stage) + const char *pathname, unsigned mode, int stage, + void *cbdata) { static int state; static char buffer[PATH_MAX]; @@ -173,7 +181,7 @@ static int walk_tree(const unsigned char *sha1, const char *base, int baselen, return 0; } } - ls_item(sha1, base, baselen, pathname, mode, stage); + ls_item(sha1, base, baselen, pathname, mode, stage, NULL); return 0; } @@ -213,6 +221,6 @@ void cgit_print_tree(const char *rev, char *path) } match_path = path; - read_tree_recursive(commit->tree, NULL, 0, 0, paths, walk_tree); + read_tree_recursive(commit->tree, NULL, 0, 0, paths, walk_tree, NULL); ls_tail(); }