Convert fltr_cache into a function. Enable output buffering which had been commented out for unknwon reasons.

This commit is contained in:
Uriel 2009-02-06 22:09:32 +01:00
parent 9ff545ec83
commit 2e1f0dd32f
5 changed files with 44 additions and 42 deletions

35
bin/fltr_cache.rc Executable file
View file

@ -0,0 +1,35 @@
#!/usr/bin/env rc
fn fltr_cache {
a=()
tmpf=()
proc=$1
shift
if(~ $#* 0) {
tmpf=/tmp/fmttmp.$pid
f=$tmpf
score=`{{tee $tmpf || exit 1} | sha1sum}
}
if not {
f=$1
if(~ $f */) {
score=`{du -an $f | sha1sum || exit 1} # XXX using -n(bytes) instead of -t(lastmod) because sitemap proc touches files in tree.
a=$f
f=/dev/null
}
if not
score=`{sha1sum $f || exit 1}
}
cachedir=/tmp/fltr_cache/$score
mkdir -p $cachedir >[2]/dev/null
if(test -s $cachedir/$proc)
cat $cachedir/$proc
if not
if($proc $a < $f | tee $cachedir/$pid)
mv $cachedir/$pid $cachedir/$proc
rm $tmpf $cachedir/$pid >[2]/dev/null &
}

View file

@ -1,34 +0,0 @@
#!/usr/bin/env rc
#. 9.rc # Not really needed when calling from werc, only would be needed if you use fproc_cache.rc standalone
a=()
tmpf=()
proc=$1
shift
if(~ $#* 0) {
tmpf=/tmp/fmttmp.$pid
f=$tmpf
score=`{{tee $tmpf || exit 1} | sha1sum}
}
if not {
f=$1
if(~ $f */) {
score=`{du -an $f | sha1sum || exit 1} # XXX using -n(bytes) instead of -t(lastmod) because sitemap proc touches files in tree.
a=$f
f=/dev/null
}
if not
score=`{sha1sum $f || exit 1}
}
cachedir=/tmp/fproc_cache/$score
mkdir -p $cachedir >[2]/dev/null
if(test -s $cachedir/$proc)
cat $cachedir/$proc
if not
if($proc $a < $f | tee $cachedir/$pid)
mv $cachedir/$pid $cachedir/$proc
rm $tmpf $cachedir/$pid >[2]/dev/null &

View file

@ -3,6 +3,7 @@
. ./werclib.rc . ./werclib.rc
. ./wercconf.rc . ./wercconf.rc
. ./corehandlers.rc . ./corehandlers.rc
. ./fltr_cache.rc
cd .. cd ..
forbidden_uri_chars='[^a-zA-Z0-9_+\-\/\.]' forbidden_uri_chars='[^a-zA-Z0-9_+\-\/\.]'
@ -105,7 +106,7 @@ fn werc_exec_request {
if(! ~ $#debug 0) if(! ~ $#debug 0)
dprint $"SERVER_NAME^$"REQUEST_URI - $"HTTP_USER_AGENT - $"REQUEST_METHOD - $"handler_body_main - $"master_template dprint $"SERVER_NAME^$"REQUEST_URI - $"HTTP_USER_AGENT - $"REQUEST_METHOD - $"handler_body_main - $"master_template
template $headers $master_template #| awk_buffer template $headers $master_template | awk_buffer
echo $res_tail echo $res_tail
} }

View file

@ -9,17 +9,17 @@
# Location of your Plan 9 from User Space installation (usually /usr/local/plan9) # Location of your Plan 9 from User Space installation (usually /usr/local/plan9)
plan9port=$PLAN9 plan9port=$PLAN9
#plan9port=/usr/local/plan9
# Path, make sure the plan9port /bin directory is included before /bin # Path, make sure the plan9port /bin directory is included before /bin
# Keep '.' in path! It is needed. # Keep '.' in path! It is needed.
path=($plan9port/bin/ . ./bin/ ./bin/contrib/ /bin/ /usr/bin/) path=($plan9port/bin/ . ./bin/ ./bin/contrib/ /bin/ /usr/bin/)
# Set this to your favorite markdown formatter, eg., markdown.pl (fproc_cache # Set this to your favorite markdown formatter, eg., markdown.pl (fltr_cache
# is a wrapper around a script it takes as an argument, in the default # takes as an argument a filter, in the default configuration markdown.pl, that
# configuration markdown.pl, that caches output) # caches output) Note that some werc components assume a markdown-like
# Note that some werc components assume a markdown-like formatter, but all # formatter, but all major functionality should should be formatter agnostic.
# major functionality should should be formatter agnostic. formatter=(fltr_cache markdown.pl)
formatter=(fproc_cache.rc markdown.pl)
# Enable debugging, to disable set to () # Enable debugging, to disable set to ()
debug=true debug=true

View file

@ -56,7 +56,7 @@ fn listDir {
echo '</ul>' echo '</ul>'
} }
fproc_cache.rc listDir $sitedir/ fltr_cache listDir $sitedir/
#listDir $sitedir/ #listDir $sitedir/
if(test -s $tmpfile) if(test -s $tmpfile)