#!/bin/sh
# $Id: control,v 1.4 2003/01/19 15:20:26 ldv Exp $

FACILITIES_DIR=/etc/control.d/facilities

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

if [ $# -ge 1 ]; then
	FACILITY="$1"
	REQUESTED_FACILITY="$FACILITY"
	shift

	FACILITY="${FACILITY//\//_}"

	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 "$REQUESTED_FACILITY: Requested $*, got $STATUS"
			fi
		fi
		exit 0
	else
		fatal "No such facility: $FACILITY"
	fi
fi

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