| fltr_cache.rc - swerc - anselm's simpler werc fork | |
| git clone git://git.suckless.org/swerc | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| fltr_cache.rc (826B) | |
| --- | |
| 1 #!/usr/bin/env rc | |
| 2 | |
| 3 fn fltr_cache { | |
| 4 a=() | |
| 5 tmpf=() | |
| 6 | |
| 7 proc=$1 | |
| 8 shift | |
| 9 | |
| 10 if(~ $#* 0) { | |
| 11 tmpf=/tmp/fmttmp.$pid | |
| 12 f=$tmpf | |
| 13 score=`{{tee $tmpf || exit 1} | sha1sum} | |
| 14 } | |
| 15 if not { | |
| 16 f=$1 | |
| 17 if(~ $f */) { | |
| 18 score=`{du -an $f | sha1sum || exit 1} # XXX using -n(bytes)… | |
| 19 a=$f | |
| 20 f=/dev/null | |
| 21 } | |
| 22 if not { | |
| 23 score=`{sha1sum $f || exit 1} | |
| 24 score=$score(1) | |
| 25 } | |
| 26 } | |
| 27 cachedir=/tmp/fltr_cache/$score | |
| 28 mkdir -p $cachedir >[2]/dev/null | |
| 29 | |
| 30 if(test -s $cachedir/$proc) | |
| 31 cat $cachedir/$proc | |
| 32 if not | |
| 33 if($proc $a < $f | tee $cachedir/$pid) | |
| 34 mv $cachedir/$pid $cachedir/$proc | |
| 35 | |
| 36 rm $tmpf $cachedir/$pid >[2]/dev/null & | |
| 37 } |