aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Keeping <john@keeping.me.uk>2018-06-18 14:22:02 +0800
committerAndy Green <andy@warmcat.com>2018-06-29 07:53:20 +0800
commit46c716331c701959efdd1a47f644f8650a677ce7 (patch)
tree1b0e10d70f558b4fd12cec3b2ef10665570184fb
parentcgit_repobasename: convert to allocated result (diff)
downloadcgit-46c716331c701959efdd1a47f644f8650a677ce7.tar.xz
cgit-46c716331c701959efdd1a47f644f8650a677ce7.zip
Add source page
We are about to introduce rendering of content for the tree view. This source page will allow bypassing the renderer and accessing the content of the current tree view. Signed-off-by: John Keeping <john@keeping.me.uk>
-rw-r--r--cmd.c6
-rw-r--r--ui-shared.c14
-rw-r--r--ui-shared.h3
3 files changed, 23 insertions, 0 deletions
diff --git a/cmd.c b/cmd.c
index 63f0ae5..56e21df 100644
--- a/cmd.c
+++ b/cmd.c
@@ -138,6 +138,11 @@ static void refs_fn(void)
cgit_print_refs();
}
+static void source_fn(void)
+{
+ cgit_print_tree(ctx.qry.sha1, ctx.qry.path);
+}
+
static void snapshot_fn(void)
{
cgit_print_snapshot(ctx.qry.head, ctx.qry.sha1, ctx.qry.path,
@@ -187,6 +192,7 @@ struct cgit_cmd *cgit_get_cmd(void)
def_cmd(refs, 1, 0, 0),
def_cmd(repolist, 0, 0, 0),
def_cmd(snapshot, 1, 0, 0),
+ def_cmd(source, 1, 1, 0),
def_cmd(stats, 1, 1, 0),
def_cmd(summary, 1, 0, 0),
def_cmd(tag, 1, 0, 0),
diff --git a/ui-shared.c b/ui-shared.c
index 24fa9f7..15887cc 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -312,6 +312,12 @@ void cgit_tree_link(const char *name, const char *title, const char *class,
reporevlink("tree", name, title, class, head, rev, path);
}
+void cgit_source_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
+ reporevlink("source", name, title, class, head, rev, path);
+}
+
void cgit_plain_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
@@ -494,6 +500,10 @@ static void cgit_self_link(char *name, const char *title, const char *class)
cgit_tree_link(name, title, class, ctx.qry.head,
ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
ctx.qry.path);
+ else if (!strcmp(ctx.qry.page, "source"))
+ cgit_source_link(name, title, class, ctx.qry.head,
+ ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
+ ctx.qry.path);
else if (!strcmp(ctx.qry.page, "plain"))
cgit_plain_link(name, title, class, ctx.qry.head,
ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
@@ -1008,6 +1018,10 @@ void cgit_print_pageheader(void)
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 if (ctx.qry.page && !strcmp(ctx.qry.page, "source"))
+ cgit_source_link("tree", NULL, hc("source"),
+ ctx.qry.head, ctx.qry.sha1,
+ ctx.qry.vpath);
else
cgit_tree_link("tree", NULL, hc("tree"), ctx.qry.head,
ctx.qry.sha1, ctx.qry.vpath);
diff --git a/ui-shared.h b/ui-shared.h
index 49c11fc..1bc9b61 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -23,6 +23,9 @@ extern void cgit_tag_link(const char *name, const char *title,
extern void cgit_tree_link(const char *name, const char *title,
const char *class, const char *head,
const char *rev, const char *path);
+extern void cgit_source_link(const char *name, const char *title,
+ const char *class, const char *head,
+ const char *rev, const char *path);
extern void cgit_plain_link(const char *name, const char *title,
const char *class, const char *head,
const char *rev, const char *path);