terminate()
{
	echo ${PROG}: ABORT: "$*" >/dev/tty

	exit 1
}

findconfig()
{
	if [ ! -f "$1" ]; then
		terminate cannot find configuration file $1
	fi
}

findcmd()
{
	if [ ! -x "$1" ]; then
		terminate cannot find executable $1
	fi
}

message()
{
	echo "$*" >/dev/tty
}

message_start()
{
	echo "$*"\\c >/dev/tty
}

message_part()
{
	echo "" "$*"\\c >/dev/tty
}

message_done()
{
	if [ $# = 1 ]; then
		echo done >/dev/tty
	else
		echo "$*" >/dev/tty
	fi
}

cat_message()
{
	sed 's/^/'${PROG}:' /' > /dev/tty
}

ask()
{
	PROMPT=$1
	shift

        answer_seen="false"
        while [ "$answer_seen" = "false" ]
        do
                message_start $PROMPT ""
                read line
 
                for answer in $*
                do
                        if [ "$answer" = "$line" ]; then
                                answer_seen="true"
                                break
                        fi
                done
        done
        echo $answer
}

askd()
{
	PROMPT=$1
	shift
	DEFAULT=$1
	shift

	while /bin/true
	do
		message_start $PROMPT ""
		read line
		if [ x"$line" = x ]; then
			line=$DEFAULT
		fi

		for answer in $*
		do
			if [ "$answer" = "$line" ]; then
				echo $answer
				return
			fi
		done
	done
}

save()
{
	cp $1 $1.$$
	message Saved a copy of $1 to $1.$$
}
