#!/bin/sh
# $Owl: Owl/packages/owl-control/control,v 1.4 2005/11/16 13:21:54 solar Exp $

FACILITIES_DIR=/etc/control.d/facilities

function fatal()
{
	echo "${0##*/}: $*" >&2
	exit 1
}

if [ $# -ge 1 ]; then
	FACILITY="$1"
	shift
	if [ -x "$FACILITIES_DIR/$FACILITY" ]; then
		$FACILITIES_DIR/$FACILITY "$*" || exit 1
		if [ -n "$*" -a "$*" != "list" -a "$*" != "status" ]; then
			STATUS="`$FACILITIES_DIR/$FACILITY status`"
			if [ "$STATUS" != "$*" ]; then
				fatal "$FACILITY: Requested $*, got $STATUS"
			fi
		fi
		exit 0
	else
		fatal "No such facility: $FACILITY"
	fi
fi

ls -1 $FACILITIES_DIR/ |
while read FACILITY; do
	test "${FACILITY%.*}" = "$FACILITY" || continue
	LIST="`$FACILITIES_DIR/$FACILITY list`"
	STATUS="`$FACILITIES_DIR/$FACILITY status`"
	printf "%-15s %-15s (%s)\n" "$FACILITY" "$STATUS" "$LIST"
done
