X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/efe91335c65b96f3eb8b32d8c58c9cce68db47b4..2469114dc567fb3a52609b589d85eb28af0cd670:/ikiwiki diff --git a/ikiwiki b/ikiwiki index b1bc9984f..6bf58017d 100755 --- 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=; 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; }#}}}