X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/badc6c229f47964f5750a55a26204d847b33b32a..ce7966a82cf8d0043a771a1a5b26e3a953e909b2:/IkiWiki/Wrapper.pm diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 6555fe625..31b4f3041 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -28,7 +28,7 @@ sub gen_wrapper () { my @envsave; push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE - HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS + HTTP_COOKIE REMOTE_USER HTTPS SSL_CLIENT_S_DN_CN REDIRECT_STATUS REDIRECT_URL} if $config{cgi}; my $envsave=""; foreach my $var (@envsave) { @@ -37,12 +37,9 @@ sub gen_wrapper () { addenv("$var", s); EOF } - - my $test_receive=""; - if ($config{test_receive}) { - require IkiWiki::Receive; - $test_receive=IkiWiki::Receive::gen_wrapper(); - } + + my @wrapper_hooks; + run_hooks(genwrapper => sub { push @wrapper_hooks, shift->() }); my $check_commit_hook=""; my $pre_exec=""; @@ -120,7 +117,7 @@ int main (int argc, char **argv) { char *s; $check_commit_hook -$test_receive +@wrapper_hooks $envsave newenviron[i++]="HOME=$ENV{HOME}"; newenviron[i++]="WRAPPED_OPTIONS=$configstring"; @@ -144,14 +141,13 @@ $pre_exec exit(1); } EOF - close OUT; - my $cc=exists $ENV{CC} ? possibly_foolish_untaint($ENV{CC}) : 'cc'; - if (system($cc, "$wrapper.c", "-o", "$wrapper.new") != 0) { + my @cc=exists $ENV{CC} ? possibly_foolish_untaint($ENV{CC}) : 'cc'; + push @cc, possibly_foolish_untaint($ENV{CFLAGS}) if exists $ENV{CFLAGS}; + if (system(@cc, "$wrapper.c", "-o", "$wrapper.new") != 0) { #translators: The parameter is a C filename. error(sprintf(gettext("failed to compile %s"), "$wrapper.c")); } - unlink("$wrapper.c"); if (defined $config{wrappergroup}) { my $gid=(getgrnam($config{wrappergroup}))[2]; if (! defined $gid) {