X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/46064d6d631326ce8e2c675c81528747049b6285..f9ff7c7aaeeae9d9c5cde5dedf33b6b7c60ecadc:/IkiWiki.pm?ds=inline
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 766226338..bc56501da 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->() });
@@ -1026,7 +1042,7 @@ sub bestlink ($$) {
sub isinlinableimage ($) {
my $file=shift;
- return $file =~ /\.(png|gif|jpg|jpeg)$/i;
+ return $file =~ /\.(png|gif|jpg|jpeg|svg)$/i;
}
sub pagetitle ($;$) {
@@ -1237,7 +1253,7 @@ sub htmllink ($$$;@) {
$cgilink = " "create",
- page => lc($link),
+ page => $link,
from => $lpage
)."\" rel=\"nofollow\">?";
}
@@ -1394,7 +1410,8 @@ sub preprocess ($$$;$$) {
|
'''(.*?)''' # 4: triple-single-quote
|
- <<(?[a-zA-Z]+)\n(?.*?)\n\k # 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
|
- <<(?[a-zA-Z]+)\n(?.*?)\n\k # 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
|
- <<(?[a-zA-Z]+)\n(?.*?)\n\k # 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} }