36 lines
786 B
Plaintext
36 lines
786 B
Plaintext
|
#!/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 &
|
||
|
}
|