diff --git a/bin/fproc_cache.rc b/bin/fproc_cache.rc index 6d419e4..11619e6 100755 --- a/bin/fproc_cache.rc +++ b/bin/fproc_cache.rc @@ -1,8 +1,9 @@ #!/usr/bin/env rc #. 9.rc # Not really needed when calling from werc, only would be needed if you use fproc_cache.rc standalone +# TODO: Allow to provide two arguments, second arg is a file name, use filename+size+mtime for hashing. +# Useful when dealing with many big files (eg., thumb gallery generation). proc=$1 - tmpfile=/tmp/fmttmp.$pid score=`{{tee $tmpfile || exit 1} | sha1sum} @@ -11,9 +12,8 @@ mkdir -p $cachedir >[2]/dev/null if(test -s $cachedir/$proc) cat $cachedir/$proc -if not { - # XXX For reliability mv should not be called unless both $proc and tee suceed - $proc < $tmpfile | tee $cachedir/$pid - mv $cachedir/$pid $cachedir/$proc -} -rm $tmpfile >[2]/dev/null +if not + if($proc < $tmpfile | tee $cachedir/$pid) + mv $cachedir/$pid $cachedir/$proc + +rm $tmpfile $cachedir/$pid >[2]/dev/null &