check_requires() { # Check required files, monitors and reactors for i in "$@" ; do p=${i%:program} m=${i%:monitor} r=${i%:reactor} if [ $p != $i ]; then if ! which $p ; then echo "Required program $p is not found." exit_unresolved fi elif [ $m != $i ]; then if ! grep -wq $m available_monitors ; then echo "Required monitor $m is not configured." exit_unsupported fi elif [ $r != $i ]; then if ! grep -wq $r available_reactors ; then echo "Required reactor $r is not configured." exit_unsupported fi elif [ ! -e $i ]; then echo "Required feature interface $i doesn't exist." exit_unsupported fi done } initialize_system() { # Reset RV to initial-state echo > enabled_monitors for m in monitors/*; do echo nop > $m/reactors || true done echo 1 > monitoring_on echo 1 > reacting_on || true } finish_system() { initialize_system }