X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/c60477228c6b4d5e00c7bdb3b895e9f30d00ea97..b39495f5015d0e5037db7682a2dc625abb26c5b8:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index c8d959edd..763f24e6c 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -17,9 +17,7 @@ our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match displaytime will_render gettext %config %links %renderedfiles %pagesources); our $VERSION = 1.02; # plugin interface version, next is ikiwiki version -our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE -my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE - +our $version="1.45";my $installdir="/usr"; # Optimisation. use Memoize; memoize("abs2rel"); @@ -293,9 +291,7 @@ sub writefile ($$$;$$) { #{{{ $writer->(\*OUT, $cleanup); } else { - if (length $content) { - print OUT $content || error("failed writing to $newfile: $!", $cleanup); - } + print OUT $content or error("failed writing to $newfile: $!", $cleanup); } close OUT || error("failed saving $newfile: $!", $cleanup); rename($newfile, "$destdir/$file") || @@ -365,20 +361,18 @@ sub pagetitle ($;$) { #{{{ my $unescaped=shift; if ($unescaped) { - $page=~s/__(\d+)__/chr($1)/eg; + $page=~s/(__(\d+)__|_)/$1 eq '_' ? ' ' : chr($2)/eg; } else { - $page=~s/__(\d+)__/&#$1;/g; + $page=~s/(__(\d+)__|_)/$1 eq '_' ? ' ' : "&#$2;"/eg; } - $page=~y/_/ /; return $page; } #}}} sub titlepage ($) { #{{{ my $title=shift; - $title=~y/ /_/; - $title=~s/([^-[:alnum:]_:+\/.])/"__".ord($1)."__"/eg; + $title=~s/([^-[:alnum:]:+\/.])/$1 eq ' ' ? '_' : "__".ord($1)."__"/eg; return $title; } #}}} @@ -510,11 +504,17 @@ sub linkify ($$$) { #{{{ } #}}} my %preprocessing; -sub preprocess ($$$;$) { #{{{ +our $preprocess_preview=0; +sub preprocess ($$$;$$) { #{{{ my $page=shift; # the page the data comes from my $destpage=shift; # the page the data will appear in (different for inline) my $content=shift; my $scan=shift; + my $preview=shift; + + # Using local because it needs to be set within any nested calls + # of this function. + local $preprocess_preview=$preview if defined $preview; my $handle=sub { my $escape=shift; @@ -566,6 +566,7 @@ sub preprocess ($$$;$) { #{{{ @params, page => $page, destpage => $destpage, + preview => $preprocess_preview, ); $preprocessing{$page}--; return $ret; @@ -621,11 +622,11 @@ sub unlockwiki () { #{{{ sub commit_hook_enabled () { #{{{ open(COMMITLOCK, "+>$config{wikistatedir}/commitlock") || error ("cannot write to $config{wikistatedir}/commitlock: $!"); - if (! flock(WIKILOCK, 1 | 4)) { # LOCK_SH | LOCK_NB to test - close WIKILOCK; + if (! flock(COMMITLOCK, 1 | 4)) { # LOCK_SH | LOCK_NB to test + close COMMITLOCK; return 0; } - close WIKILOCK; + close COMMITLOCK; return 1; } #}}}