#! /bin/sh
#
# $Id$
#

# PROVIDE: logserial

#
# Add the following line to /etc/rc.conf to enable logserial:
#
# logserial_enable="YES"
#
# logserial_command="/sbin/logserial"
# logserial_device_names="serial0"
#
# logserial_serial0_device="/dev/cuaa1"
# logserial_serial0_speed="19200"
# logserial_serial0_logfile="/var/log/pbx.log"
# logserial_serial0_pidfile="/var/run/logserial.pid"
#

. /etc/rc.subr

name="logserial"
rcvar=`set_rcvar`
start_cmd="logserial_start"
stop_cmd="logserial_stop"

[ -z "${logserial_enable}" ]	&& logserial_enable="NO"
[ -z "${logserial_command}" ]	&& logserial_command="/usr/local/bin/logserial"

#rc_debug="YES"

#
# init_variables _d
#	Initialize the various variables for devname _d.
#
init_variables()
{
	_d="$1"

	if [ -z "$_d" ]; then
		warn "init_variables: you must specify a devname"
		return
	fi

	eval logserial_device=\"\$logserial_${_d}_device\"
	[ -z "${logserial_device}" ] && logserial_device="/dev/cuaa0"
	eval logserial_speed=\"\$logserial_${_d}_speed\"
	[ -z "${logserial_speed}" ] && logserial_speed="9600"
	eval logserial_logfile=\"\$logserial_${_d}_logfile\"
	[ -z "${logserial_logfile}" ] && logserial_logfile="/var/log/${_d}.log"
	eval logserial_pidfile=\"\$logserial_${_d}_pidfile\"
	[ -z "${logserial_pidfile}" ] && logserial_pidfile="/var/run/logserial_${_d}.pid"

	debug "$_d logserial_device: $logserial_device"
	debug "$_d logserial_speed: $logserial_speed"
	debug "$_d logserial_log: $logserial_logfile"
	debug "$_d logserial_pid: $logserial_pidfile"
}

logserial_start()
{
	echo -n 'Starting logserial:'
	for _devname in ${logserial_device_names}
	do
		init_variables $_devname

		if [ -f "${logserial_pidfile}" ]; then
			if [ -n $(check_pidfile "${logserial_pidfile}" "${logserial_command}") ]; then
				echo
				echo -n "logserial already running for devname ${_devname}"
				continue;
			fi
		fi

		${logserial_command} -d ${logserial_device} -s ${logserial_speed} -l ${logserial_logfile} -p ${logserial_pidfile}
		echo -n " ${_devname}"
	done
	echo '.'
}

logserial_stop()
{
	echo -n 'Stopping logserial:'
	for _devname in ${logserial_device_names}
	do
		init_variables $_devname

		if [ -f "${logserial_pidfile}" ]; then
			_pid=$(check_pidfile "${logserial_pidfile}" "${logserial_command}")
			if  [ ! -z "$_pid" ]; then
				kill -${sig_stop:-TERM} $_pid
				echo -n " ${_devname}"
			else
				echo
				echo -n "logserial not running for devname ${_devname}?"
			fi
		else
			echo
			echo -n "logserial not running for devname ${_devname}? (${logserial_pidfile} doesn't exists)"
		fi


			
	done
	echo '.'
}

load_rc_config $name
cmd="$1"
if [ $# -gt 0 ]; then
        shift
fi
[ -n "$*" ] && logserial_device_names="$*"
run_rc_command "${cmd}"



syntax highlighted by Code2HTML, v. 0.9.1