
xxxm=$dflt

ans='!'
case "$fastread" in
yes) case "$dflt" in
    '') ;;
    *) ans='';
        case "$silent-$rp" in
        true-) ;;
        *) echo " " >&4;;
        esac;;
    esac;;
*) case "$silent" in
    true) case "$rp" in
        '') ans='';;
        esac;;
    esac;;
esac
while expr "X$ans" : "X!" >/dev/null; do
    read answ
    set x $xxxm
    shift
    aok=''; eval "ans=\"$answ\"" && aok=y
    case  "$answ" in
    "!")
        sh 1>&4
        echo " "
        
        ;;
    !*)
        set x `expr "X$ans" : "X!\(.*\)$"`
        shift
        sh 1>&4 -c "$*"
        echo " "
        
        ;;
    "$ans")
        case "$ans" in
        \&*)
            set x `expr "X$ans" : "X&\(.*\)$"`
            shift
            case "$1" in
            -d)
                fastread=yes
                echo "(OK, I'll run with -d after this question.)" >&4
                ;;
            -*)
                echo "*** Sorry, $1 not supported yet." >&4
                ;;
            esac
            
            ans=!
            ;;
        esac;;
    *)
        case "$aok" in
        y)
            echo "*** Substitution done -- please confirm."
            xxxm="$ans"
            ans=`echo  "$ans" | tr '' ' '`
            xxxm="$ans"
            ans=!
            ;;
        *)
            echo "*** Error -- try again."
            ans=!
            ;;
        esac
        
        ;;
    esac
    case "$ans$xxxm$nostick" in
    '')
        ans=!
        
        ;;
    esac
done
case "$ans" in
'') ans="$xxxm";;
esac
