]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
(no commit message)
[ikiwiki.git] / IkiWiki.pm
index 48780ae51d137fd20aba4f369817c93762035bb6..d667e7e10fe43c9162b9dd54a0105c41c80c3afe 100644 (file)
@@ -32,7 +32,6 @@ our $installdir='/usr'; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
 use Memoize;
 memoize("abs2rel");
 memoize("pagespec_translate");
-memoize("file_pruned");
 memoize("template_file");
 
 sub getsetup () {
@@ -364,7 +363,7 @@ sub getsetup () {
        },
        web_commit_regexp => {
                type => "internal",
-               default => qr/^web commit (by (.*?(?=: |$))|from (\d+\.\d+\.\d+\.\d+)):?(.*)/,
+               default => qr/^web commit (by (.*?(?=: |$))|from ([0-9a-fA-F:.]+[0-9a-fA-F])):?(.*)/,
                description => "regexp to parse web commits from logs",
                safe => 0,
                rebuild => 0,
@@ -544,12 +543,12 @@ sub loadplugins () {
        }
        
        if ($config{rcs}) {
-               if (exists $IkiWiki::hooks{rcs}) {
+               if (exists $hooks{rcs}) {
                        error(gettext("cannot use multiple rcs plugins"));
                }
                loadplugin($config{rcs});
        }
-       if (! exists $IkiWiki::hooks{rcs}) {
+       if (! exists $hooks{rcs}) {
                loadplugin("norcs");
        }
 
@@ -1770,14 +1769,18 @@ sub add_depends ($$) {
        return 1;
 }
 
-sub file_pruned ($$) {
-       require File::Spec;
-       my $file=File::Spec->canonpath(shift);
-       my $base=File::Spec->canonpath(shift);
-       $file =~ s#^\Q$base\E/+##;
+sub file_pruned ($;$) {
+       my $file=shift;
+       if (@_) {
+               require File::Spec;
+               $file=File::Spec->canonpath($file);
+               my $base=File::Spec->canonpath(shift);
+               return if $file eq $base;
+               $file =~ s#^\Q$base\E/+##;
+       }
 
        my $regexp='('.join('|', @{$config{wiki_file_prune_regexps}}).')';
-       return $file =~ m/$regexp/ && $file ne $base;
+       return $file =~ m/$regexp/;
 }
 
 sub define_gettext () {
@@ -1870,7 +1873,7 @@ sub pagespec_translate ($) {
                        [^\s()]+        # any other text
                )
                \s*             # ignore whitespace
-       }igx) {
+       }gx) {
                my $word=$1;
                if (lc $word eq 'and') {
                        $code.=' &&';
@@ -2052,10 +2055,10 @@ sub match_link ($$;@) {
                else {
                        return IkiWiki::SuccessReason->new("$page links to page $p matching $link")
                                if match_glob($p, $link, %params);
-                       $p=~s/^\///;
+                       my ($p_rel)=$p=~/^\/?(.*)/;
                        $link=~s/^\///;
-                       return IkiWiki::SuccessReason->new("$page links to page $p matching $link")
-                               if match_glob($p, $link, %params);
+                       return IkiWiki::SuccessReason->new("$page links to page $p_rel matching $link")
+                               if match_glob($p_rel, $link, %params);
                }
        }
        return IkiWiki::FailReason->new("$page does not link to $link");