SELF="${0##*/}"
TEMPDIR=
-TEMPDIR_SENTINEL=.tempdir
+TEMPRUNDIR=.tempdir-run.d
cleanup() {
- if [ -e $TEMPDIR_SENTINEL ]; then
+ if [ -d $TEMPRUNDIR ]; then
local TEMPDIR; TEMPDIR="$PWD"
- echo Cleaning up tempdir $TEMPDIR… >> output.stderr
notify_output
cd /
rm -rf "$TEMPDIR"
- else
- notify_output
fi
trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
}
trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
enter_tempdir() {
- if [ -e $TEMPDIR_SENTINEL ]; then
+ if [ -d $TEMPRUNDIR ]; then
return
else
fi
done
cd $(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX)
- touch $TEMPDIR_SENTINEL
+ mkdir $TEMPRUNDIR
fi
}
stdout="${2:-}"
stderr="${3:-}"
for i in stdout stderr; do
- if eval test -s output.$i; then
- anything=1
- escaped=$(eval sed -e 's,\",\\\",g' output.$i)
+ if eval test -s $TEMPRUNDIR/output.$i; then
+ escaped=$(eval sed -e 's,\",\\\",g' $TEMPRUNDIR/output.$i)
output="${output:+$output
}${i}:
$escaped"
}
notify_output() {
- [ -e $TEMPDIR_SENTINEL ] || return
+ [ -d $TEMPRUNDIR ] || return
local stdout stderr anything
for i in stdout stderr; do
- if [ -s "output.$i" ]; then
- eval $i="'output.$i'"
+ if [ -s "$TEMPRUNDIR/output.$i" ]; then
+ eval $i="'$TEMPRUNDIR/output.$i'"
else
eval $i=/dev/null
fi
local filename; filename="$1"
if [ -z "$VIEWER" ]; then
[ -n "${2:-}" ] && filename="${2}:${1}"
- run-mailcap "$filename" > output.stdout 2> output.stderr
+ run-mailcap "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
else
- $VIEWER "$filename" > output.stdout 2> output.stderr
+ $VIEWER "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
fi
}
while [ $(($(stat -c%X "$FILE") + $DELAY)) -gt $(date +%s) ]; do
sleep $DELAY
done
- echo Cleaning up $TMPDIR… > $TMPDIR/output.stderr
cleanup
) &
trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15