On 06/07/2011 12:36 AM, [email protected] wrote: > From: Lars Hjemli <[email protected]> > > When cgit learned to setup environment variables for certain repo > settings before invoking a filter process, the setup occurred inside > cgit_open_filter(). > > This patch moves the setup out of cgit_open_filter() and into > prepare_repo_cmd() to prepare for additional uses of these variables. > > Signed-off-by: Lars Hjemli <[email protected]> > --- > cgit.c | 1 + > cgit.h | 4 +++- > shared.c | 7 +++---- > ui-commit.c | 6 +++--- > ui-repolist.c | 2 +- > ui-snapshot.c | 2 +- > ui-summary.c | 2 +- > ui-tree.c | 2 +- > 8 files changed, 14 insertions(+), 12 deletions(-) > > diff --git a/cgit.c b/cgit.c > index 6be3754..dd40893 100644 > --- a/cgit.c > +++ b/cgit.c > @@ -463,6 +463,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx) > cgit_print_docend(); > return 1; > } > + cgit_prepare_repo_env(ctx->repo); > return 0; > } > > diff --git a/cgit.h b/cgit.h > index caa9d8e..df7ee5d 100644 > --- a/cgit.h > +++ b/cgit.h > @@ -319,9 +319,11 @@ extern const char *cgit_repobasename(const char > *reponame); > > extern int cgit_parse_snapshots_mask(const char *str); > > -extern int cgit_open_filter(struct cgit_filter *filter, struct cgit_repo * > repo); > +extern int cgit_open_filter(struct cgit_filter *filter); > extern int cgit_close_filter(struct cgit_filter *filter); > > +extern void cgit_prepare_repo_env(struct cgit_repo * repo); > + > extern int readfile(const char *path, char **buf, size_t *size); > > extern char *expand_macros(const char *txt); > diff --git a/shared.c b/shared.c > index be2ae59..4adeaa8 100644 > --- a/shared.c > +++ b/shared.c > @@ -374,7 +374,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 }, > @@ -395,7 +396,7 @@ static void prepare_env(struct cgit_repo * repo) { > 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 +407,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); > diff --git a/ui-commit.c b/ui-commit.c > index a69dec6..536a8e8 100644 > --- a/ui-commit.c > +++ b/ui-commit.c > @@ -106,7 +106,7 @@ void cgit_print_commit(char *hex, const char *prefix) > html("</table>\n"); > html("<div class='commit-subject'>"); > if (ctx.repo->commit_filter) > - cgit_open_filter(ctx.repo->commit_filter, ctx.repo); > + cgit_open_filter(ctx.repo->commit_filter); > html_txt(info->subject); > if (ctx.repo->commit_filter) > cgit_close_filter(ctx.repo->commit_filter); > @@ -114,7 +114,7 @@ void cgit_print_commit(char *hex, const char *prefix) > html("</div>"); > html("<div class='commit-msg'>"); > if (ctx.repo->commit_filter) > - cgit_open_filter(ctx.repo->commit_filter, ctx.repo); > + cgit_open_filter(ctx.repo->commit_filter); > html_txt(info->msg); > if (ctx.repo->commit_filter) > cgit_close_filter(ctx.repo->commit_filter); > @@ -123,7 +123,7 @@ void cgit_print_commit(char *hex, const char *prefix) > html("<div class='notes-header'>Notes</div>"); > html("<div class='notes'>"); > if (ctx.repo->commit_filter) > - cgit_open_filter(ctx.repo->commit_filter, ctx.repo); > + cgit_open_filter(ctx.repo->commit_filter); > html_txt(notes.buf); > if (ctx.repo->commit_filter) > cgit_close_filter(ctx.repo->commit_filter); > diff --git a/ui-repolist.c b/ui-repolist.c > index dce2eac..25c36ce 100644 > --- a/ui-repolist.c > +++ b/ui-repolist.c > @@ -300,7 +300,7 @@ void cgit_print_site_readme() > if (!ctx.cfg.root_readme) > return; > if (ctx.cfg.about_filter) > - cgit_open_filter(ctx.cfg.about_filter, NULL); > + cgit_open_filter(ctx.cfg.about_filter); > html_include(ctx.cfg.root_readme); > if (ctx.cfg.about_filter) > cgit_close_filter(ctx.cfg.about_filter); > diff --git a/ui-snapshot.c b/ui-snapshot.c > index 126779d..07cc944 100644 > --- a/ui-snapshot.c > +++ b/ui-snapshot.c > @@ -19,7 +19,7 @@ static int write_compressed_tar_archive(struct > archiver_args *args,const char *f > f.argv = malloc(2 * sizeof(char *)); > f.argv[0] = f.cmd; > f.argv[1] = NULL; > - cgit_open_filter(&f, NULL); > + cgit_open_filter(&f); > rv = write_tar_archive(args); > cgit_close_filter(&f); > return rv; > diff --git a/ui-summary.c b/ui-summary.c > index 1e9a1b6..5be2545 100644 > --- a/ui-summary.c > +++ b/ui-summary.c > @@ -113,7 +113,7 @@ void cgit_print_repo_readme(char *path) > */ > html("<div id='summary'>"); > if (ctx.repo->about_filter) > - cgit_open_filter(ctx.repo->about_filter, ctx.repo); > + cgit_open_filter(ctx.repo->about_filter); > if (ref) > cgit_print_file(tmp, ref); > else > diff --git a/ui-tree.c b/ui-tree.c > index 2d8d2f3..442b6be 100644 > --- a/ui-tree.c > +++ b/ui-tree.c > @@ -45,7 +45,7 @@ static void print_text_buffer(const char *name, char *buf, > unsigned long size) > if (ctx.repo->source_filter) { > html("<td class='lines'><pre><code>"); > ctx.repo->source_filter->argv[1] = xstrdup(name); > - cgit_open_filter(ctx.repo->source_filter, ctx.repo); > + cgit_open_filter(ctx.repo->source_filter); > html_raw(buf, size); > cgit_close_filter(ctx.repo->source_filter); > free(ctx.repo->source_filter->argv[1]);
Reviewed-by: Ferry Huberts <[email protected]> -- Ferry Huberts _______________________________________________ cgit mailing list [email protected] http://hjemli.net/mailman/listinfo/cgit
