#!/bin/sh
# $Id: control,v 1.6 2004/09/25 10:07:15 ldv Exp $

FACILITIES_DIR=/etc/control.d/facilities

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

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

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

	if [ -x "$FACILITIES_DIR/$FACILITY" ]; then
		$FACILITIES_DIR/$FACILITY "$*" || exit 1
		case "$*" in
			''|list|status|help)
				exit 0
				;;
		esac
		STATUS="`$FACILITIES_DIR/$FACILITY status`"
		if [ "$STATUS" != "$*" ]; then
			fatal "$REQUESTED_FACILITY: Requested $*, got $STATUS"
		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
