#! /usr/bin/env bash
# source: readline-test.sh
# Copyright Gerhard Rieger and contributors (see file CHANGES)
# Published under the GNU General Public License V.2, see file COPYING

# script that simulates a simple program with authentication.
# is just for testing the readline features
# perform the test with something like:
# ./socat readline,history=$HOME/.history,noecho='^Password: ' system:./readline-test.sh,pty,setsid,ctty,stderr,sigint,sigquit,echo=0,raw


BANNER='readline feature test program'
USERPROMPT='Authentication required\nUsername: '
PWDPROMPT='Password: '
PROMPT='prog> '

# degenerated user database
CREDUSER="user"
CREDPASS="password"

if   [ $(echo "x\c") = "x" ]; then ECHO="echo"
elif [ $(echo -e "x\c") = "x" ]; then ECHO="echo -e"
fi

#trap "$ECHO $0 got SIGINT"  INT
trap "$ECHO $0 got SIGINT"  INT
trap "$ECHO $0 got SIGQUIT" QUIT

# print banner
$ECHO "$BANNER"

# on (some) ksh read -p does not mean prompt
$ECHO "$USERPROMPT\c"; read -r USERNAME
$ECHO "$PWDPROMPT\c"; read -rs PASSWORD
$ECHO

if [ "$USERNAME" != "$CREDUSER" -o "$PASSWORD" != "$CREDPASS" ]; then
    $ECHO "Authentication failed" >&2
    exit -1
fi

while $ECHO "$PROMPT\c"; read -r COMMAND; do
    if [ "$COMMAND" = "exit" ]; then
	break;
    fi
    $ECHO "executing $COMMAND"
done
