From 3df7d143469d8d659a9a70cae24b71ddcb73f70e Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Sun, 27 Nov 2011 14:14:47 +0000 Subject: [PATCH] Support private, group, public as values for umask These are equivalent to octal 077, 027 and 022, but easier to get from YAML. Signed-off-by: Simon McVittie --- IkiWiki.pm | 24 ++++++++++++++++++++---- 1 file 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->() }); -- 2.26.2