diff options
author | Joey Hess <joey@kitenet.net> | 2010-04-20 18:18:39 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-04-20 18:18:39 -0400 |
commit | 64946f91982d85bb301cc9241459939c657d0eb9 (patch) | |
tree | b61b844a4b8ec9977ce267a911bc1e8406a0dab0 /IkiWiki/Plugin/autoindex.pm | |
parent | 9fc13ab196f9ac9852962365d3330020d6720b0b (diff) | |
parent | 511f7f9cb94ebdd8ea33973a0ca74d2f8249aa3f (diff) |
Merge branch 'file_pruned_revamp'
Diffstat (limited to 'IkiWiki/Plugin/autoindex.pm')
-rw-r--r-- | IkiWiki/Plugin/autoindex.pm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm index c71d73349..0dd76259e 100644 --- a/IkiWiki/Plugin/autoindex.pm +++ b/IkiWiki/Plugin/autoindex.pm @@ -36,18 +36,22 @@ sub refresh () { my (%pages, %dirs); foreach my $dir ($config{srcdir}, @{$config{underlaydirs}}, $config{underlaydir}) { + require File::Spec; + $dir=File::Spec->canonpath($dir); + find({ no_chdir => 1, wanted => sub { - $_=decode_utf8($_); - if (IkiWiki::file_pruned($_, $dir)) { + my $file=File::Spec->canonpath(decode_utf8($_)); + return if $file eq $dir; + $file=~s/^\Q$dir\E\/?//; + return unless length $file; + if (IkiWiki::file_pruned($file)) { $File::Find::prune=1; } elsif (! -l $_) { - my ($f)=/$config{wiki_file_regexp}/; # untaint + my ($f) = $file =~ /$config{wiki_file_regexp}/; # untaint return unless defined $f; - $f=~s/^\Q$dir\E\/?//; - return unless length $f; return if $f =~ /\._([^.]+)$/; # skip internal page if (! -d _) { $pages{pagename($f)}=1; |