diff --git a/cgit_70.mk b/cgit_70.mk
index 4e6857a..ab4a3ae 100644
--- a/cgit_70.mk
+++ b/cgit_70.mk
@@ -100,7 +100,8 @@ CGIT_OBJ_NAMES += ui-stats.o
##CGIT_OBJ_NAMES += ui-summary.o
CGIT_OBJ_NAMES += ui_70-summary.o
CGIT_OBJ_NAMES += ui-tag.o
-CGIT_OBJ_NAMES += ui-tree.o
+##CGIT_OBJ_NAMES += ui-tree.o
+CGIT_OBJ_NAMES += ui_70-tree.o
CGIT_OBJS := $(addprefix $(CGIT_PREFIX),$(CGIT_OBJ_NAMES))
diff --git a/ui_70-refs.c b/ui_70-refs.c
index da18f8a..6b7c900 100644
--- a/ui_70-refs.c
+++ b/ui_70-refs.c
@@ -71,10 +71,10 @@ static int print_branch(struct refinfo *ref)
html("
| ");
cgit_object_link(ref->object);
}
- cgit_gopher_text("\t");
+ cgit_gopher_tab();
cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL,
ctx.qry.showmsg, 0);
- cgit_gopher_text("\t");
+ cgit_gopher_tab();
cgit_gopher_end_selector();
return 0;
}
diff --git a/ui_70-shared.c b/ui_70-shared.c
index 30a1eaf..b5a6fa8 100644
--- a/ui_70-shared.c
+++ b/ui_70-shared.c
@@ -73,6 +73,28 @@ void gopher_vtxtf(const char *format, va_list ap)
strbuf_release(&buf);
}
+
+void gopherf(const char *format, ...)
+{
+ va_list args;
+ struct strbuf buf = STRBUF_INIT;
+
+ va_start(args, format);
+ strbuf_vaddf(&buf, format, args);
+ va_end(args);
+ cgit_gopher_text(buf.buf);
+ strbuf_release(&buf);
+}
+
+
+
+void gopher_fileperm(unsigned short mode)
+{
+ gopherf("%c%c%c", (mode & 4 ? 'r' : '-'),
+ (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-'));
+}
+
+
void cgit_gopher_textf(const char *fmt, va_list ap){
va_list cp;
@@ -320,7 +342,7 @@ static void site_url(const char *page, const char *search, const char *sort, int
}
if (page) {
- cgit_gopher_textf("?p=%s", page);
+ gopherf("?p=%s", page);
delim = "&";
}
if (search) {
@@ -337,7 +359,7 @@ static void site_url(const char *page, const char *search, const char *sort, int
}
if (ofs) {
cgit_gopher_text(delim);
- cgit_gopher_textf("ofs=%d", ofs);
+ gopherf("ofs=%d", ofs);
}
}
@@ -477,9 +499,21 @@ void cgit_tag_link(const char *name, const char *title, const char *class,
void cgit_tree_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
+
reporevlink("tree", name, title, class, head, rev, path);
}
+
+void cgit_gopher_tree_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_tree_link(name, title, class, head, rev, path);
+ cgit_gopher_end_selector();
+}
+
void cgit_plain_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
@@ -518,7 +552,7 @@ void cgit_log_link(const char *name, const char *title, const char *class,
if (ofs > 0) {
cgit_gopher_text(delim);
cgit_gopher_text("ofs=");
- cgit_gopher_textf("%d", ofs);
+ gopherf("%d", ofs);
delim = "&";
}
if (showmsg) {
@@ -530,6 +564,21 @@ void cgit_log_link(const char *name, const char *title, const char *class,
cgit_gopher_text(delim);
cgit_gopher_text("follow=1");
}
+ cgit_gopher_tab();
+}
+
+
+void cgit_gopher_log_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path,
+ int ofs, const char *grep, const char *pattern, int showmsg,
+ int follow)
+{
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_log_link(name, title, class, head, rev, path, ofs, grep, pattern, showmsg, follow);
+ cgit_gopher_end_selector();
+
}
void cgit_commit_link(const char *name, const char *title, const char *class,
@@ -539,50 +588,64 @@ void cgit_commit_link(const char *name, const char *title, const char *class,
delim = repolink(title, class, "commit", head, path);
if (rev && ctx.qry.head && strcmp(rev, ctx.qry.head)) {
- html(delim);
- html("id=");
- html_url_arg(rev);
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("id=");
+ cgit_gopher_text(rev);
+ delim = "&";
}
if (ctx.qry.difftype) {
- html(delim);
- htmlf("dt=%d", ctx.qry.difftype);
- delim = "&";
+ cgit_gopher_text(delim);
+ gopherf("dt=%d", ctx.qry.difftype);
+ delim = "&";
}
if (ctx.qry.context > 0 && ctx.qry.context != 3) {
- html(delim);
- html("context=");
- htmlf("%d", ctx.qry.context);
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("context=");
+ gopherf("%d", ctx.qry.context);
+ delim = "&";
}
if (ctx.qry.ignorews) {
- html(delim);
- html("ignorews=1");
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("ignorews=1");
+ delim = "&";
}
if (ctx.qry.follow) {
- html(delim);
- html("follow=1");
+ cgit_gopher_text(delim);
+ cgit_gopher_text("follow=1");
}
- html("'>");
if (name[0] != '\0') {
- if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) {
- html_ntxt(name, ctx.cfg.max_msg_len - 3);
- html("...");
- } else
- html_txt(name);
+ cgit_gopher_text(name);
} else
- html_txt("(no commit message)");
- html("");
+ cgit_gopher_text("(no commit message)");
+ cgit_gopher_tab();
}
+
+
+void cgit_gopher_commit_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_commit_link(name, title, class, head, rev, path);
+ cgit_gopher_end_selector();
+}
+
void cgit_refs_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
+{
+ reporevlink("refs", name, title, class, head, rev, path);
+}
+
+
+void cgit_gopher_refs_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
{
cgit_gopher_start_selector(GOPHER_MENU);
cgit_gopher_text(name);
cgit_gopher_tab();
- reporevlink("refs", name, title, class, head, rev, path);
+ cgit_refs_link(name, title, class, head, rev, path);
cgit_gopher_end_selector();
}
@@ -601,40 +664,52 @@ void cgit_diff_link(const char *name, const char *title, const char *class,
delim = repolink(title, class, "diff", head, path);
if (new_rev && ctx.qry.head != NULL && strcmp(new_rev, ctx.qry.head)) {
- html(delim);
- html("id=");
- html_url_arg(new_rev);
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("id=");
+ cgit_gopher_text(new_rev);
+ delim = "&";
}
if (old_rev) {
- html(delim);
- html("id2=");
- html_url_arg(old_rev);
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("id2=");
+ cgit_gopher_text(old_rev);
+ delim = "&";
}
if (ctx.qry.difftype) {
- html(delim);
- htmlf("dt=%d", ctx.qry.difftype);
- delim = "&";
+ cgit_gopher_text(delim);
+ gopherf("dt=%d", ctx.qry.difftype);
+ delim = "&";
}
if (ctx.qry.context > 0 && ctx.qry.context != 3) {
- html(delim);
- html("context=");
- htmlf("%d", ctx.qry.context);
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("context=");
+ gopherf("%d", ctx.qry.context);
+ delim = "&";
}
if (ctx.qry.ignorews) {
- html(delim);
- html("ignorews=1");
- delim = "&";
+ cgit_gopher_text(delim);
+ cgit_gopher_text("ignorews=1");
+ delim = "&";
}
if (ctx.qry.follow) {
- html(delim);
- html("follow=1");
+ cgit_gopher_text(delim);
+ cgit_gopher_text("follow=1");
}
- html("'>");
- html_txt(name);
- html("");
+ cgit_gopher_tab();
+}
+
+
+void cgit_gopher_diff_link(const char *name, const char *title, const char *class,
+ const char *head, const char *new_rev, const char *old_rev,
+ const char *path)
+{
+
+ cgit_gopher_start_selector(GOPHER_MENU);
+ cgit_gopher_text(name);
+ cgit_gopher_tab();
+ cgit_diff_link(name, title, class, head, new_rev, old_rev, path);
+ cgit_gopher_end_selector();
+
}
void cgit_patch_link(const char *name, const char *title, const char *class,
@@ -962,7 +1037,7 @@ void cgit_print_layout_start(void)
void cgit_print_layout_end(void)
{
- cgit_print_docend();
+ /*cgit_print_docend();*/
}
static void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix)
@@ -1091,20 +1166,20 @@ void cgit_print_pageheader(void)
NULL);
cgit_summary_link("summary", NULL, hc("summary"),
ctx.qry.head);
- cgit_refs_link("refs", NULL, hc("refs"), ctx.qry.head,
+ cgit_gopher_refs_link("refs", NULL, hc("refs"), ctx.qry.head,
ctx.qry.sha1, NULL);
- cgit_log_link("log", NULL, hc("log"), ctx.qry.head,
+ cgit_gopher_log_link("log", NULL, hc("log"), ctx.qry.head,
NULL, ctx.qry.vpath, 0, NULL, NULL,
ctx.qry.showmsg, ctx.qry.follow);
if (ctx.qry.page && !strcmp(ctx.qry.page, "blame"))
cgit_blame_link("blame", NULL, hc("blame"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.vpath);
else
- cgit_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
+ cgit_gopher_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.vpath);
- cgit_commit_link("commit", NULL, hc("commit"),
+ cgit_gopher_commit_link("commit", NULL, hc("commit"),
ctx.qry.head, ctx.qry.sha1, ctx.qry.vpath);
- cgit_diff_link("diff", NULL, hc("diff"), ctx.qry.head,
+ cgit_gopher_diff_link("diff", NULL, hc("diff"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.sha2, ctx.qry.vpath);
if (ctx.repo->max_stats)
cgit_stats_link("stats", NULL, hc("stats"),
@@ -1114,15 +1189,7 @@ void cgit_print_pageheader(void)
html_attr(ctx.repo->homepage);
html("'>homepage");
}
- html(" | ");
- html(" |