Merge remote-tracking branch 'smcv/umask-keywords'

master
Joey Hess 2011-11-27 18:33:04 -04:00
commit 884496b4da
1 changed files with 20 additions and 4 deletions

View File

@ -305,9 +305,9 @@ sub getsetup () {
rebuild => 0, rebuild => 0,
}, },
umask => { umask => {
type => "integer", type => "string",
example => "022", example => "public",
description => "force ikiwiki to use a particular umask", description => "force ikiwiki to use a particular umask (keywords public, group or private, or a number)",
advanced => 1, advanced => 1,
safe => 0, # paranoia safe => 0, # paranoia
rebuild => 0, rebuild => 0,
@ -587,7 +587,23 @@ sub checkconfig () {
unless exists $config{wikistatedir} && defined $config{wikistatedir}; unless exists $config{wikistatedir} && defined $config{wikistatedir};
if (defined $config{umask}) { if (defined $config{umask}) {
umask(possibly_foolish_untaint($config{umask})); my $u = possibly_foolish_untaint($config{umask});
if ($u =~ m/^\d+$/) {
umask($u);
}
elsif ($u eq 'private') {
umask(077);
}
elsif ($u eq 'group') {
umask(027);
}
elsif ($u eq 'public') {
umask(022);
}
else {
error(sprintf(gettext("unsupported umask setting %s"), $u));
}
} }
run_hooks(checkconfig => sub { shift->() }); run_hooks(checkconfig => sub { shift->() });