]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
fix
[ikiwiki.git] / IkiWiki.pm
index c2c3aac83825aef47f8b8733ee561c3e2f9f2fbc..56a27b3b02a4f32db7d678c0edec07d9df9ab242 100644 (file)
@@ -16,7 +16,7 @@ sub defaultconfig () { #{{{
        wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
        verbose => 0,
        wikiname => "wiki",
-       default_pageext => ".mdwn",
+       default_pageext => "mdwn",
        cgi => 0,
        rcs => 'svn',
        notify => 0,
@@ -123,7 +123,7 @@ sub dirname ($) { #{{{
 sub pagetype ($) { #{{{
        my $page=shift;
        
-       if ($page =~ /\.(.*)$/) {
+       if ($page =~ /\.([^.]+)$/) {
                return $1 if exists $hooks{htmlize}{$1};
        }
        return undef;
@@ -260,6 +260,19 @@ sub styleurl (;$) { #{{{
        return $page."style.css";
 } #}}}
 
+sub abs2rel ($$) {
+       # Work around very innefficient behavior in File::Spec if abs2rel
+       # is passed two relative paths. It's much faster if paths are
+       # absolute!
+       my $path="/".shift;
+       my $base="/".shift;
+
+       require File::Spec;
+       my $ret=File::Spec->abs2rel($path, $base);
+       $ret=~s/^// if defined $ret;
+       return $ret;
+}
+
 sub htmllink ($$$;$$$) { #{{{
        my $lpage=shift; # the page doing the linking
        my $page=shift; # the page that will contain the link (different for inline)
@@ -292,8 +305,7 @@ sub htmllink ($$$;$$$) { #{{{
                        "\">?</a>$linktext</span>"
        }
        
-       require File::Spec;
-       $bestlink=File::Spec->abs2rel($bestlink, dirname($page));
+       $bestlink=abs2rel($bestlink, dirname($page));
        
        if (! $noimageinline && isinlinableimage($bestlink)) {
                return "<img src=\"$bestlink\" alt=\"$linktext\" />";