]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
comment to multi-threading discussion
[ikiwiki.git] / IkiWiki.pm
index 8a66dcedb4b0cb356aa02d1b9b9687fc1226916b..bc56501dab4f733ca34adbb4e88dcce66e6c102e 100644 (file)
@@ -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->() });
@@ -1394,7 +1410,8 @@ sub preprocess ($$$;$$) {
                                |
                                        '''(.*?)'''     # 4: triple-single-quote
                                |
-                                       <<(?<start>[a-zA-Z]+)\n(?<heredoc>.*?)\n\k<start> # 5, 6: heredoc'd value.
+                                       <<([a-zA-Z]+)\n # 5: heredoc start
+                                       (.*?)\n\5       # 6: heredoc value
                                |
                                        (\S+)           # 7: unquoted value
                                )
@@ -1417,8 +1434,8 @@ sub preprocess ($$$;$$) {
                                elsif (defined $7) {
                                        $val=$7;
                                }
-                               elsif (defined $+{heredoc}) {
-                                       $val=$+{heredoc};
+                               elsif (defined $6) {
+                                       $val=$6;
                                }
 
                                if (defined $key) {
@@ -1488,9 +1505,10 @@ sub preprocess ($$$;$$) {
                                                |
                                                "[^"]*?"        # single-quoted value
                                                |
-                                               <<(?<start>[a-zA-Z]+)\n(?<heredoc>.*?)\n\k<start> # heredoc'd value.
+                                               '''.*?'''       # triple-single-quote
                                                |
-                                               '''.*?''' # triple-single-quoted value
+                                               <<([a-zA-Z]+)\n # 5: heredoc start
+                                               (?:.*?)\n\5     # heredoc value
                                                |
                                                [^"\s\]]+       # unquoted value
                                        )
@@ -1515,9 +1533,10 @@ sub preprocess ($$$;$$) {
                                                |
                                                "[^"]*?"        # single-quoted value
                                                |
-                                               '''.*?'''       # triple-single-quoted value
+                                               '''.*?'''       # triple-single-quote
                                                |
-                                               <<(?<start>[a-zA-Z]+)\n(?<heredoc>.*?)\n\k<start> # heredoc'd value.
+                                               <<([a-zA-Z]+)\n # 5: heredoc start
+                                               (?:.*?)\n\5     # heredoc value
                                                |
                                                [^"\s\]]+       # unquoted value
                                        )
@@ -2628,8 +2647,14 @@ sub match_link ($$;@) {
 }
 
 sub match_backlink ($$;@) {
-       my $ret=match_link($_[1], $_[0], @_);
-       $ret->influences($_[1] => $IkiWiki::DEPEND_LINKS);
+       my $page=shift;
+       my $testpage=shift;
+       my %params=@_;
+       if ($testpage eq '.') {
+               $testpage = $params{'location'}
+       }
+       my $ret=match_link($testpage, $page, @_);
+       $ret->influences($testpage => $IkiWiki::DEPEND_LINKS);
        return $ret;
 }
 
@@ -2789,6 +2814,7 @@ sub cmp_title {
        IkiWiki::pagetitle(IkiWiki::basename($b))
 }
 
+sub cmp_path { IkiWiki::pagetitle($a) cmp IkiWiki::pagetitle($b) }
 sub cmp_mtime { $IkiWiki::pagemtime{$b} <=> $IkiWiki::pagemtime{$a} }
 sub cmp_age { $IkiWiki::pagectime{$b} <=> $IkiWiki::pagectime{$a} }