X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/ab350a77b1d3b0e251cc28329f2e16f0566e521e..7ea35f9f8ecf61ab42be9947aae1176ab6e089bd:/shared.c diff --git a/shared.c b/shared.c index be2ae59..8e5ae48 100644 --- a/shared.c +++ b/shared.c @@ -8,7 +8,6 @@ #include "cgit.h" #include -#include struct cgit_repolist cgit_repolist; struct cgit_context ctx; @@ -34,6 +33,7 @@ int chk_non_negative(int result, char *msg) return result; } +char *cgit_default_repo_desc = "[no description]"; struct cgit_repo *cgit_add_repo(const char *url) { struct cgit_repo *ret; @@ -53,10 +53,9 @@ struct cgit_repo *cgit_add_repo(const char *url) ret->url = trim_end(url, '/'); ret->name = ret->url; ret->path = NULL; - ret->desc = "[no description]"; + ret->desc = cgit_default_repo_desc; ret->owner = NULL; ret->section = ctx.cfg.section; - ret->defbranch = "master"; ret->snapshots = ctx.cfg.snapshots; ret->enable_commit_graph = ctx.cfg.enable_commit_graph; ret->enable_log_filecount = ctx.cfg.enable_log_filecount; @@ -64,12 +63,15 @@ struct cgit_repo *cgit_add_repo(const char *url) ret->enable_remote_branches = ctx.cfg.enable_remote_branches; ret->enable_subject_links = ctx.cfg.enable_subject_links; ret->max_stats = ctx.cfg.max_stats; + ret->commit_sort = ctx.cfg.commit_sort; ret->module_link = ctx.cfg.module_link; ret->readme = ctx.cfg.readme; ret->mtime = -1; ret->about_filter = ctx.cfg.about_filter; ret->commit_filter = ctx.cfg.commit_filter; ret->source_filter = ctx.cfg.source_filter; + ret->clone_url = ctx.cfg.clone_url; + ret->submodules.strdup_strings = 1; return ret; } @@ -374,7 +376,8 @@ typedef struct { char * value; } cgit_env_var; -static void prepare_env(struct cgit_repo * repo) { +void cgit_prepare_repo_env(struct cgit_repo * repo) +{ cgit_env_var env_vars[] = { { .name = "CGIT_REPO_URL", .value = repo->url }, { .name = "CGIT_REPO_NAME", .value = repo->name }, @@ -391,11 +394,11 @@ static void prepare_env(struct cgit_repo * repo) { p = env_vars; q = p + env_var_count; for (; p < q; p++) - if (setenv(p->name, p->value, 1)) + if (p->value && setenv(p->name, p->value, 1)) fprintf(stderr, warn, p->name, p->value); } -int cgit_open_filter(struct cgit_filter *filter, struct cgit_repo * repo) +int cgit_open_filter(struct cgit_filter *filter) { filter->old_stdout = chk_positive(dup(STDOUT_FILENO), @@ -406,8 +409,6 @@ int cgit_open_filter(struct cgit_filter *filter, struct cgit_repo * repo) close(filter->pipe_fh[1]); chk_non_negative(dup2(filter->pipe_fh[0], STDIN_FILENO), "Unable to use pipe as STDIN"); - if (repo) - prepare_env(repo); execvp(filter->cmd, filter->argv); die("Unable to exec subprocess %s: %s (%d)", filter->cmd, strerror(errno), errno);