#!/bin/csh -f
set ny = (no yes)
if ($2 == "yesno") then
    @ i = $3 + 1
    set pmpt = "$1 [$ny[$i]]: "
else
    if ("$3" == "") then
        set pmpt = "${1}"
    else
        set pmpt = "$1 [$3]: "
    endif
endif
rpt:
echo -n "$pmpt"
set input = $<
switch ($2)
    case number:
	set tmp = `echo $input | tr -d 0123456789.`
	if ("x$tmp" != x) then
	    echo "Invalid number.  Please try again."
	    goto rpt
	endif
	breaksw

    case integer:
	set tmp = `echo $input | tr -d 0123456789`
	if ("x$tmp" != x) then
	    echo "Invalid integer.  Please try again."
	    goto rpt
	endif
	breaksw

    case neginteger:
	if ("x$input" != x-1) then
	    set tmp = `echo $input | tr -d 0123456789`
	    if ("x$tmp" != x) then
	        echo "Invalid integer.  Please try again."
	        goto rpt
	    endif
	endif
	breaksw

    case file:
	if ("x$input" == "x") then
	    set input = $3
	endif
	if (! -e "$input") then
	    echo The file $input "does not exist.  Please try again."
	    goto rpt
	endif
	breaksw

    case path:
	if ("x$input" == "x") then
	    set input = "$3"
	endif
	if (! -e "$input") then
	    foreach elt ($path)
		if (-e "$elt/$input") breaksw
	    end
	    echo The command $input "was not found.  Please try again."
	    goto rpt
	endif
	breaksw

    case yesno:
	if ("x$input" == xy || "x$input" == xyes) then
	   set input = 1
	else if ("x$input" == xn || "x$input" == xno) then
	   set input = 0
	else if ("x$input" != x) then
	   echo 'Please answer "yes" or "no".'
	   goto rpt
	endif
	breaksw

    default:
	breaksw

endsw

if ("x$input" == x) then
    set input = "$3"
endif

echo $input > $4
