#overwrite:  copy standard input to output after EOF
#
opath=$PATH
PATH=/bin:/usr/bin

case $# in
0|1)   echo 'Usage:  overwrite file cmd [args]' 1>&2; exit 2
esac

file=$1; shift
new=/tmp/overwr1.$$; old=/tmp/overwr2.$$
trap 'rm -f $new $old; exit 1' 1 2 15 # clean up files

if PATH=$opath "$@" >$new
then
	cp $file $old
	trap '' 1 2 15
	cp $new $file
else
	echo "overwrite: $1 failed, $file unchanged" 1>&2
	exit 1
fi
rm -f $new $old

