#!/bin/sh
# $NetBSD: script,v 1.2 2001/01/06 07:31:03 garbled Exp $

BACKUPDIR="/var/sushi"
CONFFILE="/etc/rc.conf"
BACKUP="${BACKUPDIR}/rc.conf"

echo "Saving changes..."

if [ ! -d $BACKUPDIR ]; then
	mkdir $BACKUPDIR
	chown root:wheel $BACKUPDIR
	chmod 700 $BACKUPDIR
fi

# backup
cp -p $CONFFILE $BACKUP

# temporary files
cp -p $BACKUP $BACKUP.new
cp -p $BACKUP $BACKUP.old

. /etc/defaults/rc.conf
. $CONFFILE

a=1
for i in `/usr/share/sushi/system/rcconf/script3`
do
	new=$(echo `eval echo \\$${a}` | sed -e 's/ $//')
	old=`eval echo \\$${i}`
	if [ "$new" != "$old" ]; then
		line=`grep -n $i $BACKUP | cut -f1 -d:`
		# if no line, add new entry, otherwise edit the entry.
		if [ -z $line ]; then
			if [ "$new" = "YES" -o "$new" = "NO" ]; then
				echo "$i=$new" >> $BACKUP.new
			else
				echo "$i=\"$new\"" >> $BACKUP.new
			fi
		else
			sed "${line}s/$old/$new/" < $BACKUP.old > $BACKUP.new
			if [ $? -ne 0 ]; then
				echo "sed failed"
				rm -f $BACKUP.new $BACKUP.old
				exit 1
			fi
		fi
		cp -p $BACKUP.new $BACKUP.old
	fi
	a=`expr $a + 1`
done

cp -p $BACKUP.new $CONFFILE

if [ $? -eq 0 ]; then
	echo "Successfully wrote a new $CONFFILE"
	echo ""
	cat $CONFFILE
else
	echo "Failed"
fi

rm -f $BACKUP.new $BACKUP.old

exit 0
