From: joey Date: Sun, 3 Sep 2006 20:11:39 +0000 (+0000) Subject: * Add proper waitpid calls for open2ed processes throughout to avoid X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/7f243ae21ae07f94efc11fbf943b46ddafe460c0 * Add proper waitpid calls for open2ed processes throughout to avoid zombies; this hit htmltidy especially badly. --- diff --git a/IkiWiki/Plugin/htmltidy.pm b/IkiWiki/Plugin/htmltidy.pm index 079da7b49..c626250cb 100644 --- a/IkiWiki/Plugin/htmltidy.pm +++ b/IkiWiki/Plugin/htmltidy.pm @@ -20,9 +20,10 @@ sub sanitize (@) { #{{{ my %params=@_; my $tries=10; + my $pid; while (1) { eval { - open2(*IN, *OUT, 'tidy -quiet -asxhtml -utf8 --show-body-only yes --show-warnings no --tidy-mark no'); + $pid=open2(*IN, *OUT, 'tidy -quiet -asxhtml -utf8 --show-body-only yes --show-warnings no --tidy-mark no'); }; last unless $@; $tries--; @@ -39,7 +40,11 @@ sub sanitize (@) { #{{{ close OUT; local $/ = undef; - return ; + my $ret=; + close IN; + waitpid $pid, 0; + + return $ret; } # }}} 1 diff --git a/IkiWiki/Plugin/otl.pm b/IkiWiki/Plugin/otl.pm index be339c88e..0cd93a3ec 100644 --- a/IkiWiki/Plugin/otl.pm +++ b/IkiWiki/Plugin/otl.pm @@ -31,9 +31,10 @@ sub htmlize (@) { #{{{ my %params=@_; my $tries=10; + my $pid; while (1) { eval { - open2(*IN, *OUT, 'otl2html -S /dev/null -T /dev/stdin'); + $pid=open2(*IN, *OUT, 'otl2html -S /dev/null -T /dev/stdin'); }; last unless $@; $tries--; @@ -51,6 +52,9 @@ sub htmlize (@) { #{{{ local $/ = undef; my $ret=; + close IN; + waitpid $pid, 0; + $ret=~s/.*//s; $ret=~s/.*//s; $ret=~s/