[PATCH 2/4] Remove context parameter from all commands
Lukas Fleischer
cgit at cryptocrack.de
Wed Jan 15 22:37:05 CET 2014
Drop the context parameter from the following functions (and all static
helpers used by them) and use the global context instead:
* cgit_get_cmd()
* All cgit command functions.
* cgit_clone_info()
* cgit_clone_objects()
* cgit_clone_head()
* cgit_print_plain()
* cgit_show_stats()
Fix all invocations of these functions accordingly.
Signed-off-by: Lukas Fleischer <cgit at cryptocrack.de>
---
cgit.c | 4 +--
cmd.c | 100 ++++++++++++++++++++++++++++++-------------------------------
cmd.h | 4 +--
ui-clone.c | 42 +++++++++++++-------------
ui-clone.h | 6 ++--
ui-plain.c | 10 +++----
ui-plain.h | 2 +-
ui-stats.c | 29 +++++++++---------
ui-stats.h | 2 +-
9 files changed, 99 insertions(+), 100 deletions(-)
diff --git a/cgit.c b/cgit.c
index 512ef56..54efd59 100644
--- a/cgit.c
+++ b/cgit.c
@@ -598,7 +598,7 @@ static void process_request(void *cbdata)
struct cgit_context *ctx = cbdata;
struct cgit_cmd *cmd;
- cmd = cgit_get_cmd(ctx);
+ cmd = cgit_get_cmd();
if (!cmd) {
ctx->page.title = "cgit error";
ctx->page.status = 404;
@@ -640,7 +640,7 @@ static void process_request(void *cbdata)
cgit_print_pageheader();
}
- cmd->fn(ctx);
+ cmd->fn();
if (cmd->want_layout)
cgit_print_docend();
diff --git a/cmd.c b/cmd.c
index 3022452..cbd235c 100644
--- a/cmd.c
+++ b/cmd.c
@@ -26,120 +26,120 @@
#include "ui-tag.h"
#include "ui-tree.h"
-static void HEAD_fn(struct cgit_context *ctx)
+static void HEAD_fn(void)
{
- cgit_clone_head(ctx);
+ cgit_clone_head();
}
-static void atom_fn(struct cgit_context *ctx)
+static void atom_fn(void)
{
- cgit_print_atom(ctx->qry.head, ctx->qry.path, ctx->cfg.max_atom_items);
+ cgit_print_atom(ctx.qry.head, ctx.qry.path, ctx.cfg.max_atom_items);
}
-static void about_fn(struct cgit_context *ctx)
+static void about_fn(void)
{
- if (ctx->repo)
- cgit_print_repo_readme(ctx->qry.path);
+ if (ctx.repo)
+ cgit_print_repo_readme(ctx.qry.path);
else
cgit_print_site_readme();
}
-static void blob_fn(struct cgit_context *ctx)
+static void blob_fn(void)
{
- cgit_print_blob(ctx->qry.sha1, ctx->qry.path, ctx->qry.head, 0);
+ cgit_print_blob(ctx.qry.sha1, ctx.qry.path, ctx.qry.head, 0);
}
-static void commit_fn(struct cgit_context *ctx)
+static void commit_fn(void)
{
- cgit_print_commit(ctx->qry.sha1, ctx->qry.path);
+ cgit_print_commit(ctx.qry.sha1, ctx.qry.path);
}
-static void diff_fn(struct cgit_context *ctx)
+static void diff_fn(void)
{
- cgit_print_diff(ctx->qry.sha1, ctx->qry.sha2, ctx->qry.path, 1, 0);
+ cgit_print_diff(ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path, 1, 0);
}
-static void rawdiff_fn(struct cgit_context *ctx)
+static void rawdiff_fn(void)
{
- cgit_print_diff(ctx->qry.sha1, ctx->qry.sha2, ctx->qry.path, 1, 1);
+ cgit_print_diff(ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path, 1, 1);
}
-static void info_fn(struct cgit_context *ctx)
+static void info_fn(void)
{
- cgit_clone_info(ctx);
+ cgit_clone_info();
}
-static void log_fn(struct cgit_context *ctx)
+static void log_fn(void)
{
- cgit_print_log(ctx->qry.sha1, ctx->qry.ofs, ctx->cfg.max_commit_count,
- ctx->qry.grep, ctx->qry.search, ctx->qry.path, 1,
- ctx->repo->enable_commit_graph,
- ctx->repo->commit_sort);
+ cgit_print_log(ctx.qry.sha1, ctx.qry.ofs, ctx.cfg.max_commit_count,
+ ctx.qry.grep, ctx.qry.search, ctx.qry.path, 1,
+ ctx.repo->enable_commit_graph,
+ ctx.repo->commit_sort);
}
-static void ls_cache_fn(struct cgit_context *ctx)
+static void ls_cache_fn(void)
{
- ctx->page.mimetype = "text/plain";
- ctx->page.filename = "ls-cache.txt";
+ ctx.page.mimetype = "text/plain";
+ ctx.page.filename = "ls-cache.txt";
cgit_print_http_headers();
- cache_ls(ctx->cfg.cache_root);
+ cache_ls(ctx.cfg.cache_root);
}
-static void objects_fn(struct cgit_context *ctx)
+static void objects_fn(void)
{
- cgit_clone_objects(ctx);
+ cgit_clone_objects();
}
-static void repolist_fn(struct cgit_context *ctx)
+static void repolist_fn(void)
{
cgit_print_repolist();
}
-static void patch_fn(struct cgit_context *ctx)
+static void patch_fn(void)
{
- cgit_print_patch(ctx->qry.sha1, ctx->qry.sha2, ctx->qry.path);
+ cgit_print_patch(ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path);
}
-static void plain_fn(struct cgit_context *ctx)
+static void plain_fn(void)
{
- cgit_print_plain(ctx);
+ cgit_print_plain();
}
-static void refs_fn(struct cgit_context *ctx)
+static void refs_fn(void)
{
cgit_print_refs();
}
-static void snapshot_fn(struct cgit_context *ctx)
+static void snapshot_fn(void)
{
- cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1, ctx->qry.path,
- ctx->repo->snapshots, ctx->qry.nohead);
+ cgit_print_snapshot(ctx.qry.head, ctx.qry.sha1, ctx.qry.path,
+ ctx.repo->snapshots, ctx.qry.nohead);
}
-static void stats_fn(struct cgit_context *ctx)
+static void stats_fn(void)
{
- cgit_show_stats(ctx);
+ cgit_show_stats();
}
-static void summary_fn(struct cgit_context *ctx)
+static void summary_fn(void)
{
cgit_print_summary();
}
-static void tag_fn(struct cgit_context *ctx)
+static void tag_fn(void)
{
- cgit_print_tag(ctx->qry.sha1);
+ cgit_print_tag(ctx.qry.sha1);
}
-static void tree_fn(struct cgit_context *ctx)
+static void tree_fn(void)
{
- cgit_print_tree(ctx->qry.sha1, ctx->qry.path);
+ cgit_print_tree(ctx.qry.sha1, ctx.qry.path);
}
#define def_cmd(name, want_repo, want_layout, want_vpath, is_clone) \
{#name, name##_fn, want_repo, want_layout, want_vpath, is_clone}
-struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx)
+struct cgit_cmd *cgit_get_cmd(void)
{
static struct cgit_cmd cmds[] = {
def_cmd(HEAD, 1, 0, 0, 1),
@@ -165,15 +165,15 @@ struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx)
};
int i;
- if (ctx->qry.page == NULL) {
- if (ctx->repo)
- ctx->qry.page = "summary";
+ if (ctx.qry.page == NULL) {
+ if (ctx.repo)
+ ctx.qry.page = "summary";
else
- ctx->qry.page = "repolist";
+ ctx.qry.page = "repolist";
}
for (i = 0; i < sizeof(cmds)/sizeof(*cmds); i++)
- if (!strcmp(ctx->qry.page, cmds[i].name))
+ if (!strcmp(ctx.qry.page, cmds[i].name))
return &cmds[i];
return NULL;
}
diff --git a/cmd.h b/cmd.h
index eb5bc87..752f078 100644
--- a/cmd.h
+++ b/cmd.h
@@ -1,7 +1,7 @@
#ifndef CMD_H
#define CMD_H
-typedef void (*cgit_cmd_fn)(struct cgit_context *ctx);
+typedef void (*cgit_cmd_fn)(void);
struct cgit_cmd {
const char *name;
@@ -12,6 +12,6 @@ struct cgit_cmd {
is_clone:1;
};
-extern struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx);
+extern struct cgit_cmd *cgit_get_cmd(void);
#endif /* CMD_H */
diff --git a/ui-clone.c b/ui-clone.c
index 09e2b46..d25553b 100644
--- a/ui-clone.c
+++ b/ui-clone.c
@@ -29,22 +29,22 @@ static int print_ref_info(const char *refname, const unsigned char *sha1,
return 0;
}
-static void print_pack_info(struct cgit_context *ctx)
+static void print_pack_info(void)
{
struct packed_git *pack;
int ofs;
- ctx->page.mimetype = "text/plain";
- ctx->page.filename = "objects/info/packs";
+ ctx.page.mimetype = "text/plain";
+ ctx.page.filename = "objects/info/packs";
cgit_print_http_headers();
- ofs = strlen(ctx->repo->path) + strlen("/objects/pack/");
+ ofs = strlen(ctx.repo->path) + strlen("/objects/pack/");
prepare_packed_git();
for (pack = packed_git; pack; pack = pack->next)
if (pack->pack_local)
htmlf("P %s\n", pack->pack_name + ofs);
}
-static void send_file(struct cgit_context *ctx, char *path)
+static void send_file(char *path)
{
struct stat st;
@@ -61,41 +61,41 @@ static void send_file(struct cgit_context *ctx, char *path)
}
return;
}
- ctx->page.mimetype = "application/octet-stream";
- ctx->page.filename = path;
- if (prefixcmp(ctx->repo->path, path))
- ctx->page.filename += strlen(ctx->repo->path) + 1;
+ ctx.page.mimetype = "application/octet-stream";
+ ctx.page.filename = path;
+ if (prefixcmp(ctx.repo->path, path))
+ ctx.page.filename += strlen(ctx.repo->path) + 1;
cgit_print_http_headers();
html_include(path);
}
-void cgit_clone_info(struct cgit_context *ctx)
+void cgit_clone_info(void)
{
- if (!ctx->qry.path || strcmp(ctx->qry.path, "refs"))
+ if (!ctx.qry.path || strcmp(ctx.qry.path, "refs"))
return;
- ctx->page.mimetype = "text/plain";
- ctx->page.filename = "info/refs";
+ ctx.page.mimetype = "text/plain";
+ ctx.page.filename = "info/refs";
cgit_print_http_headers();
- for_each_ref(print_ref_info, ctx);
+ for_each_ref(print_ref_info, NULL);
}
-void cgit_clone_objects(struct cgit_context *ctx)
+void cgit_clone_objects(void)
{
- if (!ctx->qry.path) {
+ if (!ctx.qry.path) {
html_status(400, "Bad request", 0);
return;
}
- if (!strcmp(ctx->qry.path, "info/packs")) {
- print_pack_info(ctx);
+ if (!strcmp(ctx.qry.path, "info/packs")) {
+ print_pack_info();
return;
}
- send_file(ctx, git_path("objects/%s", ctx->qry.path));
+ send_file(git_path("objects/%s", ctx.qry.path));
}
-void cgit_clone_head(struct cgit_context *ctx)
+void cgit_clone_head(void)
{
- send_file(ctx, git_path("%s", "HEAD"));
+ send_file(git_path("%s", "HEAD"));
}
diff --git a/ui-clone.h b/ui-clone.h
index 89cd4f1..3e460a3 100644
--- a/ui-clone.h
+++ b/ui-clone.h
@@ -1,8 +1,8 @@
#ifndef UI_CLONE_H
#define UI_CLONE_H
-void cgit_clone_info(struct cgit_context *ctx);
-void cgit_clone_objects(struct cgit_context *ctx);
-void cgit_clone_head(struct cgit_context *ctx);
+void cgit_clone_info(void);
+void cgit_clone_objects(void);
+void cgit_clone_head(void);
#endif /* UI_CLONE_H */
diff --git a/ui-plain.c b/ui-plain.c
index 8909d30..30fff89 100644
--- a/ui-plain.c
+++ b/ui-plain.c
@@ -206,14 +206,14 @@ static int basedir_len(const char *path)
return 0;
}
-void cgit_print_plain(struct cgit_context *ctx)
+void cgit_print_plain(void)
{
- const char *rev = ctx->qry.sha1;
+ const char *rev = ctx.qry.sha1;
unsigned char sha1[20];
struct commit *commit;
struct pathspec_item path_items = {
- .match = ctx->qry.path,
- .len = ctx->qry.path ? strlen(ctx->qry.path) : 0
+ .match = ctx.qry.path,
+ .len = ctx.qry.path ? strlen(ctx.qry.path) : 0
};
struct pathspec paths = {
.nr = 1,
@@ -224,7 +224,7 @@ void cgit_print_plain(struct cgit_context *ctx)
};
if (!rev)
- rev = ctx->qry.head;
+ rev = ctx.qry.head;
if (get_sha1(rev, sha1)) {
html_status(404, "Not found", 0);
diff --git a/ui-plain.h b/ui-plain.h
index 4373118..5bff07b 100644
--- a/ui-plain.h
+++ b/ui-plain.h
@@ -1,6 +1,6 @@
#ifndef UI_PLAIN_H
#define UI_PLAIN_H
-extern void cgit_print_plain(struct cgit_context *ctx);
+extern void cgit_print_plain(void);
#endif /* UI_PLAIN_H */
diff --git a/ui-stats.c b/ui-stats.c
index 84b247c..bc27308 100644
--- a/ui-stats.c
+++ b/ui-stats.c
@@ -209,13 +209,12 @@ static int cmp_total_commits(const void *a1, const void *a2)
/* Walk the commit DAG and collect number of commits per author per
* timeperiod into a nested string_list collection.
*/
-static struct string_list collect_stats(struct cgit_context *ctx,
- struct cgit_period *period)
+static struct string_list collect_stats(struct cgit_period *period)
{
struct string_list authors;
struct rev_info rev;
struct commit *commit;
- const char *argv[] = {NULL, ctx->qry.head, NULL, NULL, NULL, NULL};
+ const char *argv[] = {NULL, ctx.qry.head, NULL, NULL, NULL, NULL};
int argc = 3;
time_t now;
long i;
@@ -229,9 +228,9 @@ static struct string_list collect_stats(struct cgit_context *ctx,
period->dec(tm);
strftime(tmp, sizeof(tmp), "%Y-%m-%d", tm);
argv[2] = xstrdup(fmt("--since=%s", tmp));
- if (ctx->qry.path) {
+ if (ctx.qry.path) {
argv[3] = "--";
- argv[4] = ctx->qry.path;
+ argv[4] = ctx.qry.path;
argc += 2;
}
init_revisions(&rev, NULL);
@@ -360,30 +359,30 @@ static void print_authors(struct string_list *authors, int top,
* for each author is another string_list which is used to calculate the
* number of commits per time-interval.
*/
-void cgit_show_stats(struct cgit_context *ctx)
+void cgit_show_stats(void)
{
struct string_list authors;
struct cgit_period *period;
int top, i;
const char *code = "w";
- if (ctx->qry.period)
- code = ctx->qry.period;
+ if (ctx.qry.period)
+ code = ctx.qry.period;
i = cgit_find_stats_period(code, &period);
if (!i) {
cgit_print_error("Unknown statistics type: %c", code[0]);
return;
}
- if (i > ctx->repo->max_stats) {
+ if (i > ctx.repo->max_stats) {
cgit_print_error("Statistics type disabled: %s", period->name);
return;
}
- authors = collect_stats(ctx, period);
+ authors = collect_stats(period);
qsort(authors.items, authors.nr, sizeof(struct string_list_item),
cmp_total_commits);
- top = ctx->qry.ofs;
+ top = ctx.qry.ofs;
if (!top)
top = 10;
@@ -392,10 +391,10 @@ void cgit_show_stats(struct cgit_context *ctx)
html("<form method='get' action=''>");
cgit_add_hidden_formfields(1, 0, "stats");
html("<table><tr><td colspan='2'/></tr>");
- if (ctx->repo->max_stats > 1) {
+ if (ctx.repo->max_stats > 1) {
html("<tr><td class='label'>Period:</td>");
html("<td class='ctrl'><select name='period' onchange='this.form.submit();'>");
- for (i = 0; i < ctx->repo->max_stats; i++)
+ for (i = 0; i < ctx.repo->max_stats; i++)
html_option(fmt("%c", periods[i].code),
periods[i].name, fmt("%c", period->code));
html("</select></td></tr>");
@@ -414,9 +413,9 @@ void cgit_show_stats(struct cgit_context *ctx)
html("</form>");
html("</div>");
htmlf("<h2>Commits per author per %s", period->name);
- if (ctx->qry.path) {
+ if (ctx.qry.path) {
html(" (path '");
- html_txt(ctx->qry.path);
+ html_txt(ctx.qry.path);
html("')");
}
html("</h2>");
diff --git a/ui-stats.h b/ui-stats.h
index f0761ba..341ab13 100644
--- a/ui-stats.h
+++ b/ui-stats.h
@@ -23,6 +23,6 @@ struct cgit_period {
extern int cgit_find_stats_period(const char *expr, struct cgit_period **period);
extern const char *cgit_find_stats_periodname(int idx);
-extern void cgit_show_stats(struct cgit_context *ctx);
+extern void cgit_show_stats(void);
#endif /* UI_STATS_H */
--
1.8.5.2
More information about the CGit
mailing list