X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/63edea27bc71c3bdf1837f994fb7effdd93fb2dd..efecdae0914773b224b76a4247e1aaf3fd24ee0e:/IkiWiki/Plugin/rst.pm diff --git a/IkiWiki/Plugin/rst.pm b/IkiWiki/Plugin/rst.pm index 6bf11fe36..1fd13d1f5 100644 --- a/IkiWiki/Plugin/rst.pm +++ b/IkiWiki/Plugin/rst.pm @@ -36,23 +36,25 @@ print html[html.find('')+6:html.find('')].strip(); "; sub import { #{{{ - IkiWiki::hook(type => "htmlize", id => "rst", call => \&htmlize); + hook(type => "htmlize", id => "rst", call => \&htmlize); } # }}} -sub htmlize ($) { #{{{ - my $content=shift; +sub htmlize (@) { #{{{ + my %params=@_; + my $content=$params{content}; my $tries=10; + my $pid; while (1) { eval { # Try to call python and run our command - open2(*IN, *OUT, "python", "-c", $pyCmnd) + $pid=open2(*IN, *OUT, "python", "-c", $pyCmnd) or return $content; }; last unless $@; $tries--; if ($tries < 1) { - IkiWiki::debug("failed to run python to convert rst: $@"); + debug("failed to run python to convert rst: $@"); return $content; } } @@ -62,8 +64,13 @@ sub htmlize ($) { #{{{ print OUT $content; close OUT; + local $/ = undef; - return ; + my $ret=; + close IN; + waitpid $pid, 0; + + return $ret; } # }}} 1