#!/bin/sh
#
# Optional network-backed serial-device control for Antler/86.
#
# This script is intentionally separate from /bin/net.  /bin/net starts the
# small network server and netpoll heartbeat; this script decides whether the
# /dev/ipserial application transport should consume a resident service slot.

CONF=/etc/services.conf

usage()
{
	echo "usage: /etc/init.d/ipserial start|login|stop|restart|status|boot|enable|disable"
}

enabled()
{
	test -f "$CONF" || return 1
	grep "SERVICE_IPSERIAL=yes" "$CONF" >/dev/null 2>&1
}

set_enabled()
{
	value="$1"
	if test -f "$CONF" && grep "SERVICE_IPSERIAL=" "$CONF" >/dev/null 2>&1; then
		sed "s/^SERVICE_IPSERIAL=.*/SERVICE_IPSERIAL=$value/" "$CONF" >/tmp/ipserial.conf
		mv /tmp/ipserial.conf "$CONF"
	else
		echo "SERVICE_IPSERIAL=$value" >> "$CONF"
	fi
}

start_ipserial()
{
	if test -x /bin/net; then
		/bin/net start || exit 1
	fi
	/bin/service load ipserial || exit 1
	/bin/service start ipserial
}

stop_ipserial()
{
	/bin/service stop ipserial || true
	/bin/service unload ipserial || true
}

case "$1" in
start)
	start_ipserial
	;;
login)
	start_ipserial
	# Do not retain a shell wrapper on an XT.  Getty opens /dev/ipserial and
	# executes the exact /bin/login used by the resident COM1 getty.
	exec /bin/getty /dev/ipserial 9600
	;;
stop)
	stop_ipserial
	;;
restart)
	stop_ipserial
	start_ipserial
	;;
status)
	/bin/service status ipserial
	;;
boot)
	if enabled; then
		start_ipserial
	fi
	;;
enable)
	set_enabled yes
	echo "ipserial enabled"
	;;
disable)
	set_enabled no
	stop_ipserial
	echo "ipserial disabled"
	;;
*)
	usage
	exit 1
	;;
esac

exit 0
