about summary refs log tree commit diff
path: root/cmd.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cmd.c112
1 files changed, 112 insertions, 0 deletions
diff --git a/cmd.c b/cmd.c
new file mode 100644
index 0000000..e0eacbe
--- /dev/null
+++ b/cmd.c
@@ -0,0 +1,112 @@
+/* cmd.c: the cgit command dispatcher
+ *
+ * Copyright (C) 2008 Lars Hjemli
+ *
+ * Licensed under GNU General Public License v2
+ *   (see COPYING for full license text)
+ */
+
+#include "cgit.h"
+#include "cmd.h"
+#include "ui-blob.h"
+#include "ui-commit.h"
+#include "ui-diff.h"
+#include "ui-log.h"
+#include "ui-patch.h"
+#include "ui-refs.h"
+#include "ui-repolist.h"
+#include "ui-snapshot.h"
+#include "ui-summary.h"
+#include "ui-tag.h"
+#include "ui-tree.h"
+
+static void blob_fn(struct cgit_context *ctx)
+{
+	cgit_print_blob(ctx->qry.sha1, ctx->qry.path);
+}
+
+static void commit_fn(struct cgit_context *ctx)
+{
+	cgit_print_commit(ctx->qry.sha1);
+}
+
+static void diff_fn(struct cgit_context *ctx)
+{
+	cgit_print_diff(ctx->qry.sha1, ctx->qry.sha2, ctx->qry.path);
+}
+
+static void repolist_fn(struct cgit_context *ctx)
+{
+	cgit_print_repolist();
+}
+
+static void log_fn(struct cgit_context *ctx)
+{
+	cgit_print_log(ctx->qry.sha1, ctx->qry.ofs, ctx->cfg.max_commit_count,
+		       ctx->qry.grep, ctx->qry.search, ctx->qry.path, 1);
+}
+
+static void patch_fn(struct cgit_context *ctx)
+{
+	cgit_print_patch(ctx->qry.sha1);
+}
+
+static void refs_fn(struct cgit_context *ctx)
+{
+	cgit_print_refs();
+}
+
+static void snapshot_fn(struct cgit_context *ctx)
+{
+	cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1,
+			    cgit_repobasename(ctx->repo->url), ctx->qry.path,
+			    ctx->repo->snapshots);
+}
+
+static void summary_fn(struct cgit_context *ctx)
+{
+	cgit_print_summary();
+}
+
+static void tag_fn(struct cgit_context *ctx)
+{
+	cgit_print_tag(ctx->qry.sha1);
+}
+
+static void tree_fn(struct cgit_context *ctx)
+{
+	cgit_print_tree(ctx->qry.sha1, ctx->qry.path);
+}
+
+#define def_cmd(name, want_repo, want_layout) \
+	{#name, name##_fn, want_repo, want_layout}
+
+struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx)
+{
+	static struct cgit_cmd cmds[] = {
+		def_cmd(blob, 1, 0),
+		def_cmd(commit, 1, 1),
+		def_cmd(diff, 1, 1),
+		def_cmd(log, 1, 1),
+		def_cmd(patch, 1, 0),
+		def_cmd(refs, 1, 1),
+		def_cmd(repolist, 0, 0),
+		def_cmd(snapshot, 1, 0),
+		def_cmd(summary, 1, 1),
+		def_cmd(tag, 1, 1),
+		def_cmd(tree, 1, 1),
+	};
+	int i;
+
+	if (ctx->qry.page == NULL) {
+		if (ctx->repo)
+			ctx->qry.page = "summary";
+		else
+			ctx->qry.page = "repolist";
+	}
+
+	for(i = 0; i < sizeof(cmds)/sizeof(*cmds); i++)
+		if (!strcmp(ctx->qry.page, cmds[i].name))
+			return &cmds[i];
+	return NULL;
+}
nce.c?h=3.0&id=be3aa8c9a8bb40cbbaefc2b91ebaee70fc64e4b1&follow=1'>Handle signals before the main loopJune McEnroe This is a long-standing issue I ignored. 2020-09-09Fix possibliy uninitialized error 2.0June McEnroe It won't be, but gcc thinks it might. 2020-08-31Refactor reserialization and client self-producingJune McEnroe 2020-08-30Add chmod+chown to certbot exampleJune McEnroe 2020-08-30Rearrange bounce.c, move non-main mains below mainJune McEnroe 2020-08-30Sandbox pounce with unveil(2)June McEnroe 2020-08-28Refactor certificate loading and load all certs from config pathsJune McEnroe 2020-08-27Sandbox pounce with pledge(2)June McEnroe unveil(2) is a bit complicated to apply to this, I'll have to think about it more. 2020-08-27Sandbox calico with pledge(2) and unveil(2)June McEnroe 2020-08-27Add support for OpenBSDJune McEnroe 2020-08-27Remove rc scriptsJune McEnroe 2020-08-27contrib/palaver: Fix documented database pathJune McEnroe 2020-08-27contrib/palaver: Remove rc scriptJune McEnroe 2020-08-27contrib/palaver: Fix database search and creationJune McEnroe 2020-08-27contrib/palaver: Use pounce's XDG directoryJune McEnroe 2020-08-27contrib/palaver: Only allow HTTPSJune McEnroe 2020-08-25Support the pounce_env rc variableJune McEnroe 2020-08-25Remove deprecated option namesJune McEnroe The next release will be 2.0 so these can be removed now. 2020-08-25Document configuration and data file searchJune McEnroe 2020-08-24Use dataOpen for save fileJune McEnroe 2020-08-24Use configOpen to load localCAJune McEnroe 2020-08-24Use configPath to load client cert/privJune McEnroe 2020-08-24Use configOpen in getopt_configJune McEnroe 2020-08-24Import xdg.c from catgirlJune McEnroe 2020-08-23Replace “RAND_bytes” by “getentropy”Issam E. Maghni This removes the dependency on libcrypto. Signed-off-by: Issam E. Maghni <issam.e.maghni@mailbox.org> 2020-08-16contrib/palaver: Add no message preview flagsJune McEnroe 2020-08-13contrib/palaver: Don't set channel for PMsJune McEnroe 2020-08-13Fix unintended interception of NICK after registrationJune McEnroe Another bug caused by trying to support broken clients. I'm annoyed. 2020-08-12Add Additional Components section to READMEJune McEnroe 2020-08-12Document -L / palaver optionJune McEnroe 2020-08-11contrib/palaver: Document service configurationJune McEnroe 2020-08-11contrib/palaver: Add install target and rc scriptJune McEnroe 2020-08-11contrib/palaver: Implement command and notificationsJune McEnroe