diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2007-11-14 09:27:11 -0500 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2007-11-14 09:27:11 -0500 |
commit | cb80809aec56e1b6f0194f3d6f778fc8db3c7783 (patch) | |
tree | 9153eb779c632d7b99d5702202ec8dca4707c5b2 /IkiWiki | |
parent | ebac5236869862d7f7e776402212f6b9731b326a (diff) |
* Add wrappergroup config option, which can be used to cause wrappers
to be created owned by some group other than the default. Useful
then there's a shared repository with access controlled by a group,
to let ikiwiki run setgid to that group.
* ikiwiki-mass-rebuild: Run build with the user in all their groups.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Wrapper.pm | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm index 558cdb1cc..6687cace2 100644 --- a/IkiWiki/Wrapper.pm +++ b/IkiWiki/Wrapper.pm @@ -102,14 +102,26 @@ $envsave } EOF close OUT; - if (system("gcc", "$wrapper.c", "-o", $wrapper) != 0) { + if (system("gcc", "$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) { + error(sprintf("bad wrappergroup")); + } + if (! chown(-1, $gid, "$wrapper.new")) { + error("chown $wrapper.new: $!"); + } + } if (defined $config{wrappermode} && - ! chmod(oct($config{wrappermode}), $wrapper)) { - error("chmod $wrapper: $!"); + ! chmod(oct($config{wrappermode}), "$wrapper.new")) { + error("chmod $wrapper.new: $!"); + } + if (! rename("$wrapper.new", $wrapper)) { + error("rename $wrapper.new $wrapper: $!"); } #translators: The parameter is a filename. printf(gettext("successfully generated %s"), $wrapper); |