diff options
author | Joey Hess <joey@kitenet.net> | 2011-11-27 18:33:04 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-11-27 18:33:04 -0400 |
commit | 884496b4daa3d2d0400f401f75a6e62dd649d2fb (patch) | |
tree | a1bd1a03bc2a5cdcf75154c6453d4d622b3593c1 | |
parent | 128a63d5f2c0ddf3faae9bcf1fd805f1372ad1ae (diff) | |
parent | 3df7d143469d8d659a9a70cae24b71ddcb73f70e (diff) | |
download | ikiwiki-884496b4daa3d2d0400f401f75a6e62dd649d2fb.tar ikiwiki-884496b4daa3d2d0400f401f75a6e62dd649d2fb.tar.gz |
Merge remote-tracking branch 'smcv/umask-keywords'
-rw-r--r-- | IkiWiki.pm | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 637d56c73..59fefc699 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -305,9 +305,9 @@ sub getsetup () { rebuild => 0, }, umask => { - type => "integer", - example => "022", - description => "force ikiwiki to use a particular umask", + type => "string", + example => "public", + description => "force ikiwiki to use a particular umask (keywords public, group or private, or a number)", advanced => 1, safe => 0, # paranoia rebuild => 0, @@ -587,7 +587,23 @@ sub checkconfig () { unless exists $config{wikistatedir} && defined $config{wikistatedir}; 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->() }); |