]> sipb.mit.edu Git - ikiwiki.git/blobdiff - ikiwiki
renamed
[ikiwiki.git] / ikiwiki
diff --git a/ikiwiki b/ikiwiki
index b1bc9984f2bd9475787808d65f886424c250e7cc..6bf58017d1246ed774b6c9e03ccfd584658c3372 100755 (executable)
--- a/ikiwiki
+++ b/ikiwiki
@@ -21,7 +21,7 @@ sub getconfig () { #{{{
                        wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$|\.rss$)},
                        wiki_link_regexp => qr/\[\[(?:([^\s\]\|]+)\|)?([^\s\]]+)\]\]/,
                        wiki_processor_regexp => qr/\[\[(\w+)\s+([^\]]+)\]\]/,
-                       wiki_file_regexp => qr/(^[-A-Za-z0-9_.:\/+]+$)/,
+                       wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
                        verbose => 0,
                        wikiname => "wiki",
                        default_pageext => ".mdwn",
@@ -36,6 +36,7 @@ sub getconfig () { #{{{
                        rebuild => 0,
                        refresh => 0,
                        getctime => 0,
+                       hyperestraier => 0,
                        wrapper => undef,
                        wrappermode => undef,
                        srcdir => undef,
@@ -57,6 +58,7 @@ sub getconfig () { #{{{
                        "wrappermode=i" => \$config{wrappermode},
                        "svn!" => \$config{svn},
                        "anonok!" => \$config{anonok},
+                       "hyperestraier" => \$config{hyperestraier},
                        "rss!" => \$config{rss},
                        "cgi!" => \$config{cgi},
                        "url=s" => \$config{url},
@@ -102,6 +104,9 @@ sub checkconfig () { #{{{
        if ($config{rss} && ! length $config{url}) {
                error("Must specify url to wiki with --url when using --rss\n");
        }
+       if ($config{hyperestraier} && ! length $config{url}) {
+               error("Must specify --url when using --hyperestraier\n");
+       }
        
        $config{wikistatedir}="$config{srcdir}/.ikiwiki"
                unless exists $config{wikistatedir};
@@ -188,24 +193,27 @@ sub srcfile ($) { #{{{
        error("internal error: $file cannot be found");
 } #}}}
 
-sub readfile ($) { #{{{
+sub readfile ($;$) { #{{{
        my $file=shift;
+       my $binary=shift;
 
        if (-l $file) {
                error("cannot read a symlink ($file)");
        }
        
        local $/=undef;
-       open (IN, "$file") || error("failed to read $file: $!");
+       open (IN, $file) || error("failed to read $file: $!");
+       binmode(IN) if $binary;
        my $ret=<IN>;
        close IN;
        return $ret;
 } #}}}
 
-sub writefile ($$$) { #{{{
+sub writefile ($$$;$) { #{{{
        my $file=shift; # can include subdirs
        my $destdir=shift; # directory to put file in
        my $content=shift;
+       my $binary=shift;
        
        my $test=$file;
        while (length $test) {
@@ -227,6 +235,7 @@ sub writefile ($$$) { #{{{
        }
        
        open (OUT, ">$destdir/$file") || error("failed to write $destdir/$file: $!");
+       binmode(OUT) if $binary;
        print OUT $content;
        close OUT;
 } #}}}
@@ -272,7 +281,7 @@ sub pagetitle ($) { #{{{
 sub titlepage ($) { #{{{
        my $title=shift;
        $title=~y/ /_/;
-       $title=~s/([^-A-Za-z0-9_:+\/.])/"__".ord($1)."__"/eg;
+       $title=~s/([^-[:alnum:]_:+\/.])/"__".ord($1)."__"/eg;
        return $title;
 } #}}}
 
@@ -423,6 +432,7 @@ sub misctemplate ($$) { #{{{
                wikiname => $config{wikiname},
                pagebody => $pagebody,
                styleurl => styleurl(),
+               baseurl => "$config{url}/",
        );
        return $template->output;
 }#}}}