X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/e4ddc8f72b5a7d8c55a6c2042c7b7f945ba4b1a2..42231328d3fa1e443566a5d8e6c3ccbce16157b6:/cgit.c diff --git a/cgit.c b/cgit.c index 3b3f8d9..65fad7a 100644 --- a/cgit.c +++ b/cgit.c @@ -72,11 +72,7 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value) else if (!strcmp(name, "section")) repo->section = xstrdup(value); else if (!strcmp(name, "readme") && value != NULL) { - char *colon; - if (*value == '/' || ((colon = strchr(value, ':')) != NULL && colon != value && *(colon + 1) != '\0')) - repo->readme = xstrdup(value); - else - repo->readme = xstrdup(fmt("%s/%s", repo->path, value)); + repo->readme = xstrdup(value); } else if (ctx.cfg.enable_filter_overrides) { if (!strcmp(name, "about-filter")) repo->about_filter = new_filter(value, 0); @@ -97,6 +93,8 @@ void config_cb(const char *name, const char *value) ctx.repo->path = trim_end(value, '/'); else if (ctx.repo && !prefixcmp(name, "repo.")) repo_config(ctx.repo, name + 5, value); + else if (!strcmp(name, "readme")) + ctx.cfg.readme = xstrdup(value); else if (!strcmp(name, "root-title")) ctx.cfg.root_title = xstrdup(value); else if (!strcmp(name, "root-desc")) @@ -123,6 +121,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.logo_link = xstrdup(value); else if (!strcmp(name, "module-link")) ctx.cfg.module_link = xstrdup(value); + else if (!strcmp(name, "strict-export")) + ctx.cfg.strict_export = xstrdup(value); else if (!strcmp(name, "virtual-root")) { ctx.cfg.virtual_root = trim_end(value, '/'); if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) @@ -139,6 +139,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.enable_filter_overrides = atoi(value); else if (!strcmp(name, "enable-gitweb-owner")) ctx.cfg.enable_gitweb_owner = atoi(value); + else if (!strcmp(name, "enable-http-clone")) + ctx.cfg.enable_http_clone = atoi(value); else if (!strcmp(name, "enable-index-links")) ctx.cfg.enable_index_links = atoi(value); else if (!strcmp(name, "enable-log-filecount")) @@ -195,6 +197,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.project_list, repo_config); else scan_tree(expand_macros(value), repo_config); + 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); else if (!strcmp(name, "summary-log")) @@ -298,6 +302,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.logo = "/cgit.png"; ctx->cfg.local_time = 0; ctx->cfg.enable_gitweb_owner = 1; + ctx->cfg.enable_http_clone = 1; ctx->cfg.enable_tree_linenumbers = 1; ctx->cfg.max_repo_count = 50; ctx->cfg.max_commit_count = 50; @@ -451,6 +456,11 @@ static void process_request(void *cbdata) return; } + if (!ctx->cfg.enable_http_clone && cmd->is_clone) { + html_status(404, "Not found", 0); + return; + } + /* If cmd->want_vpath is set, assume ctx->qry.path contains a "virtual" * in-project path limit to be made available at ctx->qry.vpath. * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL).