#!/bin/sh
# $NetBSD: script,v 1.3 2005/01/18 18:12:55 peter Exp $

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

if [ "$3" = "now" -o "$3" = "both" ]; then
	sysctl -w $1=$2
fi

if [ "$3" = "boot" -o "$3" = "both" ]; then
	echo "Saving changes..."

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

	# create a backup
	cp -p $CONFFILE $BACKUP
	if [ $? -ne 0 ]; then
		echo "Can't create a backup"
		exit 1
	fi

	# temporary file
	cp -p $BACKUP $BACKUP.new

	line=`grep -n $1 $BACKUP | cut -f1 -d:`
	# if no such line, add a new entry, otherwise edit the entry.
	if [ -z "$line" ]; then
		echo "$1=$2" >> $BACKUP.new
	else
		sed "${line}s/.*/$1=$2/" < $BACKUP > $BACKUP.new
		cp -p $BACKUP.new $BACKUP.old
		sed "${line}s/^#//" < $BACKUP.old > $BACKUP.new
	fi

	cp -p $BACKUP.new $CONFFILE
	if [ $? -eq 0 ]; then
		echo "Successfully wrote a new $CONFFILE"
		echo ""
		cat $CONFFILE
	else
		echo "Failed to write a new $CONFFILE"
	fi

	rm -f $BACKUP.new $BACKUP.old
fi
