aboutsummaryrefslogtreecommitdiff
path: root/shared.c
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'shared.c')
-rw-r--r--shared.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/shared.c b/shared.c
index 4adeaa8..be2ae59 100644
--- a/shared.c
+++ b/shared.c
@@ -374,8 +374,7 @@ typedef struct {
char * value;
} cgit_env_var;
-void cgit_prepare_repo_env(struct cgit_repo * repo)
-{
+static void prepare_env(struct cgit_repo * repo) {
cgit_env_var env_vars[] = {
{ .name = "CGIT_REPO_URL", .value = repo->url },
{ .name = "CGIT_REPO_NAME", .value = repo->name },
@@ -396,7 +395,7 @@ void cgit_prepare_repo_env(struct cgit_repo * repo)
fprintf(stderr, warn, p->name, p->value);
}
-int cgit_open_filter(struct cgit_filter *filter)
+int cgit_open_filter(struct cgit_filter *filter, struct cgit_repo * repo)
{
filter->old_stdout = chk_positive(dup(STDOUT_FILENO),
@@ -407,6 +406,8 @@ int cgit_open_filter(struct cgit_filter *filter)
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);