aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2011-11-27 18:33:04 -0400
committerJoey Hess <joey@kitenet.net>2011-11-27 18:33:04 -0400
commit884496b4daa3d2d0400f401f75a6e62dd649d2fb (patch)
treea1bd1a03bc2a5cdcf75154c6453d4d622b3593c1
parent128a63d5f2c0ddf3faae9bcf1fd805f1372ad1ae (diff)
parent3df7d143469d8d659a9a70cae24b71ddcb73f70e (diff)
downloadikiwiki-884496b4daa3d2d0400f401f75a6e62dd649d2fb.tar
ikiwiki-884496b4daa3d2d0400f401f75a6e62dd649d2fb.tar.gz
Merge remote-tracking branch 'smcv/umask-keywords'
-rw-r--r--IkiWiki.pm24
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->() });