38 lines
826 B
Bash
Executable File
38 lines
826 B
Bash
Executable File
#!/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}
|
|
score=$score(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 &
|
|
}
|