From: Ferry Huberts <ferry.huberts@xxxxxxxxxx> Signed-off-by: Ferry Huberts <ferry.huberts@xxxxxxxxxx> --- cgit.c | 34 +++++++++++++++++++++++++++------- 1 files changed, 27 insertions(+), 7 deletions(-) diff --git a/cgit.c b/cgit.c index 4440feb..6fa8f60 100644 --- a/cgit.c +++ b/cgit.c @@ -18,6 +18,10 @@ const char *cgit_version = CGIT_VERSION; +typedef enum { + about, commit, source +} filter_type; + void add_mimetype(const char *name, const char *value) { struct string_list_item *item; @@ -26,14 +30,30 @@ void add_mimetype(const char *name, const char *value) item->util = xstrdup(value); } -struct cgit_filter *new_filter(const char *cmd, int extra_args) +struct cgit_filter *new_filter(const char *cmd, filter_type filtertype) { int i = 0; struct cgit_filter *f; + int extra_args; if (!cmd || !cmd[0]) return NULL; + switch (filtertype) { + case about: + case commit: + extra_args = 0; + break; + + case source: + extra_args = 1; + break; + + default: + extra_args = 0; + break; + } + f = xmalloc(sizeof(struct cgit_filter)); f->cmd = xstrdup(cmd); f->argv = xmalloc((2 + extra_args) * sizeof(char *)); @@ -78,11 +98,11 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value) repo->readme = xstrdup(value); } else if (ctx.cfg.enable_filter_overrides) { if (!strcmp(name, "about-filter")) - repo->about_filter = new_filter(value, 0); + repo->about_filter = new_filter(value, about); else if (!strcmp(name, "commit-filter")) - repo->commit_filter = new_filter(value, 0); + repo->commit_filter = new_filter(value, commit); else if (!strcmp(name, "source-filter")) - repo->source_filter = new_filter(value, 1); + repo->source_filter = new_filter(value, source); } } @@ -171,9 +191,9 @@ void config_cb(const char *name, const char *value) else if (!strcmp(name, "cache-dynamic-ttl")) ctx.cfg.cache_dynamic_ttl = atoi(value); else if (!strcmp(name, "about-filter")) - ctx.cfg.about_filter = new_filter(value, 0); + ctx.cfg.about_filter = new_filter(value, about); else if (!strcmp(name, "commit-filter")) - ctx.cfg.commit_filter = new_filter(value, 0); + ctx.cfg.commit_filter = new_filter(value, commit); else if (!strcmp(name, "embedded")) ctx.cfg.embedded = atoi(value); else if (!strcmp(name, "max-atom-items")) @@ -201,7 +221,7 @@ void config_cb(const char *name, const char *value) else if (!strcmp(name, "section-from-path")) ctx.cfg.section_from_path = atoi(value); else if (!strcmp(name, "source-filter")) - ctx.cfg.source_filter = new_filter(value, 1); + ctx.cfg.source_filter = new_filter(value, source); else if (!strcmp(name, "summary-log")) ctx.cfg.summary_log = atoi(value); else if (!strcmp(name, "summary-branches")) -- 1.7.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html