189750Sdwmalone#!/bin/sh
289750Sdwmalone# getans prompt type default  results_filename
389750Sdwmalone#  type is one of 
489750Sdwmalone#   number  
589750Sdwmalone#   integer
689750Sdwmalone#   neginteger
789750Sdwmalone#   file    default=default filename
889750Sdwmalone#   path        
989750Sdwmalone#   yesno   default=0,1 corres yes or no 
1089750Sdwmalone#   string (default)
1189750Sdwmalone
1289750SdwmaloneRAWPMPT=$1
1389750SdwmaloneTYP=$2
1489750SdwmaloneDFLT=$3
1589750SdwmaloneOFNM=$4
1689750Sdwmalone
1789750Sdwmaloneny0="no"; ny1="yes"
1889750Sdwmaloneif [ ${TYP} = "yesno" ]; then
1989750Sdwmalone    eval ny=\$ny${DFLT}
2089750Sdwmalone    pmpt="${RAWPMPT} [$ny]: "
2124139Sjoergelse
2289750Sdwmalone    if [ -z "${DFLT}" ]; then
2389750Sdwmalone        pmpt="${RAWPMPT}"
2424139Sjoerg    else
2589750Sdwmalone        pmpt="${RAWPMPT} [${DFLT}]: "
2689750Sdwmalone    fi
2789750Sdwmalonefi
2889750Sdwmaloneif [ x"`echo -n`" = x-n ]
2989750Sdwmalonethen
3089750Sdwmalone    c=\\c
3189750Sdwmaloneelse
3289750Sdwmalone    n=-n
3389750Sdwmalonefi
3489750Sdwmalone
3589750Sdwmalonewhile :
3689750Sdwmalonedo
3789750Sdwmalone    echo $n "$pmpt"$c
3889750Sdwmalone    read input
3989750Sdwmalone    case "$TYP" in
4089750Sdwmalone    number)
4189750Sdwmalone	tmp=`echo $input | tr -d 0123456789.`
4289750Sdwmalone	if [ -n "$tmp" ]; then
4324139Sjoerg	    echo "Invalid number.  Please try again."
4489750Sdwmalone	    continue
4589750Sdwmalone	fi
4689750Sdwmalone	;;
4724139Sjoerg
4889750Sdwmalone    integer)
4989750Sdwmalone	tmp=`echo $input | tr -d 0123456789`
5089750Sdwmalone	if [ -n "$tmp" ]; then
5124139Sjoerg	    echo "Invalid integer.  Please try again."
5289750Sdwmalone	    continue
5389750Sdwmalone	fi
5489750Sdwmalone	;;
5524139Sjoerg
5689750Sdwmalone    neginteger)
5789750Sdwmalone	if [ "x$input" != "x-1" ]; then
5889750Sdwmalone	    tmp=`echo $input | tr -d 0123456789`
5989750Sdwmalone	    if [ -n "$tmp" ]; then
6024139Sjoerg	        echo "Invalid integer.  Please try again."
6189750Sdwmalone	        continue
6289750Sdwmalone	    fi
6389750Sdwmalone	fi
6489750Sdwmalone        ;;
6524139Sjoerg
6689750Sdwmalone    file)
6789750Sdwmalone	if [ -z "$input" ]; then
6889750Sdwmalone	    input=${DFLT}
6989750Sdwmalone	fi
7089750Sdwmalone	if [ ! -f "$input"  -a ! -d "$input" ]; then
7189750Sdwmalone	    echo "The file $input does not exist.  Please try again."
7289750Sdwmalone	    continue
7389750Sdwmalone	fi
7489750Sdwmalone	;;
7524139Sjoerg
7689750Sdwmalone    path)
7789750Sdwmalone	if [ -z "$input" ];  then
7889750Sdwmalone	    input="${DFLT}"
7989750Sdwmalone	fi
8089750Sdwmalone	if [ ! -f "$input" ]; then
8189750Sdwmalone            path=`echo $PATH | sed -e s'/::/ . /g' -e 's/:/ /g'`
8289750Sdwmalone	    x=
8389750Sdwmalone            for elt in $path;  do
8489750Sdwmalone		if [ -f "$elt/$input" ]; then  x=1; break; fi
8589750Sdwmalone	    done
8689750Sdwmalone	    if [ -z "$x" ] ;then 
8789750Sdwmalone                echo "The command $input was not found.  Please try again."
8889750Sdwmalone	        continue
8989750Sdwmalone            fi
9089750Sdwmalone	fi
9189750Sdwmalone	;;
9224139Sjoerg
9389750Sdwmalone    yesno)
9489750Sdwmalone	if [ -z "$input" ];  then  
9589750Sdwmalone            input="${DFLT}"
9689750Sdwmalone        else
9789750Sdwmalone            case $input in 
9889750Sdwmalone            y | yes)
9989750Sdwmalone                input=1 ;;
10089750Sdwmalone            n | no)
10189750Sdwmalone                input=0 ;;
10289750Sdwmalone            *)
10389750Sdwmalone	        echo 'Please answer "yes" or "no".'
10489750Sdwmalone	        continue ;;
10589750Sdwmalone            esac
10689750Sdwmalone        fi
10789750Sdwmalone        ;;
10824139Sjoerg
10989750Sdwmalone    *)	;;
11089750Sdwmalone    esac
11189750Sdwmalone    break
11289750Sdwmalonedone
11324139Sjoerg
11489750Sdwmaloneif [ -z "$input" ]; then
11589750Sdwmalone    input="${DFLT}"
11689750Sdwmalonefi
11724139Sjoerg
11889750Sdwmaloneecho $input > ${OFNM}
119