]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
updates
[ikiwiki.git] / IkiWiki.pm
index d1b65cd5129365db7e5998da7627e08f5dd0ae7f..98145a585efda00b7110db7762b3be7106c169c9 100644 (file)
@@ -282,14 +282,15 @@ sub htmlpage ($) { #{{{
        return targetpage($page, $config{htmlext});
 } #}}}
 
-sub srcfile ($) { #{{{
+sub srcfile ($;$) { #{{{
        my $file=shift;
+       my $nothrow=shift;
 
        return "$config{srcdir}/$file" if -e "$config{srcdir}/$file";
        foreach my $dir (@{$config{underlaydirs}}, $config{underlaydir}) {
                return "$dir/$file" if -e "$dir/$file";
        }
-       error("internal error: $file cannot be found in $config{srcdir} or underlay");
+       error("internal error: $file cannot be found in $config{srcdir} or underlay") unless $nothrow;
        return;
 } #}}}
 
@@ -621,6 +622,9 @@ sub userlink ($) { #{{{
                return "<a href=\"$user\">$oiduser</a>";
        }
        else {
+               eval q{use CGI 'escapeHTML'};
+               error($@) if $@;
+
                return htmllink("", "", escapeHTML(
                        length $config{userdir} ? $config{userdir}."/".$user : $user
                ), noimageinline => 1);
@@ -1244,6 +1248,10 @@ sub pagespec_translate ($) { #{{{
                }
        }
 
+       if (! length $code) {
+               $code=0;
+       }
+
        return eval 'sub { my $page=shift; '.$code.' }';
 } #}}}
 
@@ -1279,7 +1287,9 @@ use overload ( #{{{
 ); #}}}
 
 sub new { #{{{
-       return bless \$_[1], $_[0];
+       my $class = shift;
+       my $value = shift;
+       return bless \$value, $class;
 } #}}}
 
 package IkiWiki::SuccessReason;
@@ -1292,7 +1302,9 @@ use overload ( #{{{
 ); #}}}
 
 sub new { #{{{
-       return bless \$_[1], $_[0];
+       my $class = shift;
+       my $value = shift;
+       return bless \$value, $class;
 }; #}}}
 
 package IkiWiki::PageSpec;