X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/cb80809aec56e1b6f0194f3d6f778fc8db3c7783..40f88c9240a994fbcc5efccce69f6766da8613ed:/IkiWiki/Wrapper.pm?ds=sidebyside diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 6687cace2..79b9eb3e3 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -1,13 +1,13 @@ #!/usr/bin/perl +package IkiWiki; + use warnings; use strict; use Cwd q{abs_path}; use Data::Dumper; use IkiWiki; -package IkiWiki; - sub gen_wrapper () { #{{{ $config{srcdir}=abs_path($config{srcdir}); $config{destdir}=abs_path($config{destdir}); @@ -36,22 +36,6 @@ sub gen_wrapper () { #{{{ addenv("$var", s); EOF } - if ($config{rcs} eq "svn" && $config{notify}) { - # Support running directly as hooks/post-commit by passing - # $2 in REV in the environment. - $envsave.=<<"EOF" - if (argc == 3) - addenv("REV", argv[2]); - else if ((s=getenv("REV"))) - addenv("REV", s); -EOF - } - if ($config{rcs} eq "tla" && $config{notify}) { - $envsave.=<<"EOF" - if ((s=getenv("ARCH_VERSION"))) - addenv("ARCH_VERSION", s); -EOF - } $Data::Dumper::Indent=0; # no newlines my $configstring=Data::Dumper->Dump([\%config], ['*config']); @@ -91,8 +75,14 @@ $envsave newenviron[i]=NULL; environ=newenviron; - if (setregid(getegid(), -1) != 0 || setreuid(geteuid(), -1) != 0) { - perror("failed to drop real uid/gid"); + if (setregid(getegid(), -1) != 0 && + setregid(getegid(), -1) != 0) { + perror("failed to drop real gid"); + exit(1); + } + if (setreuid(geteuid(), -1) != 0 && + setreuid(geteuid(), -1) != 0) { + perror("failed to drop real uid"); exit(1); } @@ -102,7 +92,9 @@ $envsave } EOF close OUT; - if (system("gcc", "$wrapper.c", "-o", "$wrapper.new") != 0) { + + my $cc=exists $ENV{CC} ? possibly_foolish_untaint($ENV{CC}) : 'cc'; + 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")); }