#!/bin/sh # Copyright (C) 2014, Eric Wong # License: GPLv3 or later # edit and atomically update ~/.spamasassin/user_prefs safely set -e cd ~/.spamassassin cp user_prefs user_prefs.edit.$$ # don't care if we clobber old files # non-blocking lock if ! ln user_prefs.edit.$$ user_prefs.edit then rm user_prefs.edit.$$ echo >&2 "we are already editing user_prefs.edit" exit 1 fi rm user_prefs.edit.$$ ${VISUAL-vi} user_prefs.edit if diff -u user_prefs user_prefs.edit then rm -f user_prefs.edit echo 'no changes' exit 0 fi # check until we're good or $EDITOR fails while ! spamassassin -p user_prefs.edit --lint do echo >&2 "respawning editor, press Enter to continue" read ignored_var ${VISUAL-vi} user_prefs.edit done # atomically replace user_prefs mv user_prefs.edit user_prefs echo '~/.spamassassin/user_prefs updated'