#!/bin/sh -e
    
##########################################################################
#   Script description:
#       
#   Arguments:
#       
#   Returns:
#       
#   History:
#   Date        Name        Modification
#   2012-01-08  Jason Bacon Begin
##########################################################################

stop_service()
{
    if [ -e /etc/rc.d/$script ] || [ -e $(auto-localbase)/etc/rc.d/$script ]; then
	service $script stop || true
    fi
    if pkill $service; then
	printf "Killed rogue $service.\n"
    fi
    rm -f /var/run/$service.pid
    return 0
}


##########################################################################
#   Main
##########################################################################

if [ $# != 2 ] && [ $# != 4 ]; then
    printf "Usage: $0 [-s rc.d-script-name] rc.conf-name calling-program-name\n"
    printf "Example: $0 -s kerberos5_server kerberos my-setup-script\n"
    exit 1
fi

if [ $# = 4 ]; then
    script=$2
    shift
    shift
else
    script=$1
fi
service=$1
caller=$2

case $(auto-ostype) in
FreeBSD)
    if grep -q "^${service}_enable=\"YES\"" /etc/rc.conf; then
	printf "$service already enabled.\n"
	printf "If you need the service restarted, you must do it manually.\n"
	exit 0
    fi
    
    if grep -q "^${service}_enable=\"NO\"" /etc/rc.conf; then
	sed -i '' "s|${service}_enable=\"NO\"|${service}_enable=\"YES\"|g" /etc/rc.conf
    fi

    auto-set-conf-var ${service}_enable '"YES"' /etc/rc.conf $caller
    stop_service
    if [ -e /etc/rc.d/$script ] || [ -e $(auto-localbase)/etc/rc.d/$script ]; then
	# Use restart instead of start to prevent desktop-installer
	# from exiting after killing rogue devd?
	service $script restart || true
    else
	printf "Warning: No service startup script found for $service.\n"
    fi
    ;;
    
NetBSD)
    if grep -q "^${service}=YES" /etc/rc.conf; then
	printf "$service already enabled.\n"
	printf "If you need the service restarted, you must do it manually.\n"
	exit 0
    fi
    
    set -x
    if grep -q "^${service}=NO" /etc/rc.conf; then
	sed -i'' -e "s|${service}=NO|${service}=YES|g" /etc/rc.conf
    else
	auto-set-conf-var $service YES /etc/rc.conf $caller
    fi

    stop_service
    if [ -e /etc/rc.d/$script ]; then
	service $script start
    elif [ -e $(auto-localbase)/share/examples/rc.d/$script ]; then
	cp $(auto-localbase)/share/examples/rc.d/$script /etc/rc.d
	service $script start
    else
	printf "Warning: No service startup script found for $service.\n"
    fi
    ;;
    
*)
    auto-unsupported-os $0
    exit 1
    ;;

esac
