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)
{
struct cgit_filter *f;
int args_size = 0;
+ int extra_args;
if (!cmd || !cmd[0])
return NULL;
+ switch (filtertype) {
+ case SOURCE:
+ extra_args = 1;
+ break;
+
+ case ABOUT:
+ case COMMIT:
+ default:
+ extra_args = 0;
+ break;
+ }
+
f = xmalloc(sizeof(struct cgit_filter));
f->cmd = xstrdup(cmd);
args_size = (2 + extra_args) * sizeof(char *);
void repo_config(struct cgit_repo *repo, const char *name, const char *value)
{
+ struct string_list_item *item;
+
if (!strcmp(name, "name"))
repo->name = xstrdup(value);
else if (!strcmp(name, "clone-url"))
repo->max_stats = cgit_find_stats_period(value, NULL);
else if (!strcmp(name, "module-link"))
repo->module_link= xstrdup(value);
- else if (!strcmp(name, "section"))
+ else if (!prefixcmp(name, "module-link.")) {
+ item = string_list_append(&repo->submodules, name + 12);
+ item->util = xstrdup(value);
+ } else if (!strcmp(name, "section"))
repo->section = xstrdup(value);
else if (!strcmp(name, "readme") && value != NULL)
repo->readme = xstrdup(value);
repo->logo_link = 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);
}
}
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"))
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"))
ctx.cfg.robots = xstrdup(value);
else if (!strcmp(name, "clone-prefix"))
ctx.cfg.clone_prefix = xstrdup(value);
+ else if (!strcmp(name, "clone-url"))
+ ctx.cfg.clone_url = xstrdup(value);
else if (!strcmp(name, "local-time"))
ctx.cfg.local_time = atoi(value);
else if (!prefixcmp(name, "mimetype."))
ctx->cfg.max_repodesc_len = 80;
ctx->cfg.max_blob_size = 0;
ctx->cfg.max_stats = 0;
- ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s";
ctx->cfg.project_list = NULL;
ctx->cfg.renamelimit = -1;
ctx->cfg.remove_suffix = 0;
cgit_print_docend();
return 1;
}
+ sort_string_list(&ctx->repo->submodules);
+ cgit_prepare_repo_env(ctx->repo);
return 0;
}