diff options
Diffstat (limited to 'source/ap/at/doinst.sh')
-rw-r--r-- | source/ap/at/doinst.sh | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/source/ap/at/doinst.sh b/source/ap/at/doinst.sh index 6c4b5431..8c031101 100644 --- a/source/ap/at/doinst.sh +++ b/source/ap/at/doinst.sh @@ -1,16 +1,35 @@ #!/bin/sh + config() { + for infile in $1; do + NEW="$infile" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... + done +} + +preserve_perms() { NEW="$1" - OLD="`dirname $NEW`/`basename $NEW .new`" - # If there's no config file by that name, mv it over: - if [ ! -r $OLD ]; then - mv $NEW $OLD - elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy - rm $NEW + OLD="$(dirname $NEW)/$(basename $NEW .new)" + if [ -e $OLD ]; then + cp -a $OLD ${NEW}.incoming + cat $NEW > ${NEW}.incoming + mv ${NEW}.incoming $NEW fi - # Otherwise, we leave the .new copy for the admin to consider... + config $NEW } + +preserve_perms etc/rc.d/rc.atd.new +config etc/default/atd.new config etc/at.deny.new + if [ ! -r var/spool/atjobs/.SEQ ]; then touch var/spool/atjobs/.SEQ chmod 660 var/spool/atjobs/.SEQ |