1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-22 02:15:28 +00:00
Interlisp.maiko/bin/medley-solaris

204 lines
4.8 KiB
Bash
Executable File

#! /bin/sh
# ============================================================================
# Changes:
# ============================================================================
# SYNOPSYS:
# medley [[emulator] sysout]
#
# If no arguments are passed to the utility, it will try to find
# an emulator and sysout based on DEFAULTDIR. When arguments are
# given, it will try to be "smart" when finding files.
#
# It also will try to find a file containing the Medley software key.
# If it doesn't find one, it will prompt for a valid key.
#
# ============================================================================
#---------- Change if necessary ----------
DEFAULTEMULATOR=lde
DEFAULTSYSOUT=LISP.SYSOUT
DEFAULTDIR=REPLACEME # Normally updated by installation script
#************************************************************
#********* Changes below this point should normally *********
#********* not be required *********
#************************************************************
APPLICATION="Medley 2.0"
SCRIPTNAME=`/bin/basename $0`
HOSTNAME=`/usr/ucb/hostname`
KEYFILENAME=".medleyKey.$HOSTNAME"
exitScript(){
echo "$1"
exit
}
smartPath() {
FILE=`/bin/basename $1`
if [ -f "$1" ]
then FILEPATH=$1
elif [ "$FILE" = "$1" ]
then if [ -f "$2/$1" ]
then FILEPATH="$2/$1"
elif [ -f "$HOME/$1" ]
then FILEPATH="$HOME/$1"
elif [ -f "$HOME/medley/$1" ]
then FILEPATH="$HOME/medley/$1"
else exitScript "$3 file not found: $1"
fi
else exitScript "$3 file not found: $1"
fi
}
parseCommand() {
case $# in
[012]) getOSVersion
# Now set the machine type
EMULATORDIR=install.sunos${OSVERSION}
PATH=$PATH:$DEFAULTDIR/$EMULATORDIR:.
cd $DEFAULTDIR/$EMULATORDIR
export PATH
case $# in
0) EMULATOR=$DEFAULTEMULATOR ;;
1) EMULATOR=$DEFAULTEMULATOR
smartPath $1 $DEFAULTDIR/lispsysouts Sysout
SYSOUT=$FILEPATH ;;
2) EMULATOR=$1
smartPath $2 $DEFAULTDIR/lispsysouts Sysout
SYSOUT=$FILEPATH ;;
esac ;;
*) echo "Usage: $SCRIPTNAME [[emulator] sysout]"
exit ;;
esac
}
setOSVersion(){
unset validOSVersionP
case "$1" in
3|3.[X245]) OSVERSION=3 ;;
4.0|4.0.*) OSVERSION=4 ;;
4.1|4.1.*) OSVERSION=4.1 ;;
5.*) OSVERSION=5 ;;
*) MESSAGE="Invalid reply: $answer"
validOSVersionP=notTrue ;;
esac
[ ${validOSVersionP:-true} = true ]
}
askOSVersion(){
MESSAGE="$1"
while [ ${menuloop:-notdone} = notdone ]
do /usr/ucb/clear
echo "
<---------------> OS Options Menu <--------------->
3.X - SunOS 3.2 3.4 3.5
4.0 - SunOS 4.0 4.0.X
4.1 - SunOS 4.1 4.1.X
5.0 - SunOS 5.0 and up.
${MESSAGE:+
$MESSAGE}"
unset MESSAGE
echo -n "Select : "
answer=`/usr/bin/line`
if setOSVersion $answer
then menuloop=done
fi
done
}
getOSVersion() {
if [ -f /etc/motd ]
then if setOSVersion `/usr/ucb/sed -e '1s/.*SunOS \(...\).*/\1/' -e '1q' < /etc/motd`
then echo -n ""
else echo "$MESSAGE"
fi
else askOSVersion "Please specify the SunOS version you are running."
fi
}
validKeyP() {
unset keyTooLongP
VALID=`echo $* | /bin/awk '/[^0-9a-fA-F ]/'`
for group in $*
do LENGTH=`echo $group | /bin/awk '{print length}'`
if [ "$LENGTH" -gt 8 ]
then keyTooLongP=true
fi
done
[ $# = 3 -a "$VALID" = "" -a ${keyTooLongP:-notTrue} = notTrue ]
}
saveKey() {
echo "Saving key '$KEY' into file '$KEYFILENAME' ..."
echo -n "Trying $DEFAULTDIR/$KEYFILENAME ..."
if [ -w "$DEFAULTDIR" ]
then echo "$KEY" > "$DEFAULTDIR/$KEYFILENAME"
else echo " Write protected ! "
echo -n "Trying $HOME/$KEYFILENAME instead ..."
echo "$KEY" > "$HOME/$KEYFILENAME"
fi
if [ $? = 0 ]
then echo " Done"
else echo " Some error occured \! "
fi
}
keyDefinedP() {
if [ -f "$DEFAULTDIR/$KEYFILENAME" ]
then if [ -r "$DEFAULTDIR/$KEYFILENAME" ]
then KEYFILE="$DEFAULTDIR/$KEYFILENAME"
else echo "ERROR! Cannot read file: $DEFAULTDIR/$KEYFILE"
fi
elif [ -f "$HOME/$KEYFILENAME" ]
then KEYFILE="$HOME/$KEYFILENAME"
else echo "
To start $APPLICATION, a host access key is required.
Call Venue at (1-800-228-5325) for one,
and be prepared to give them your workstations host ID#
"
fi
[ ${KEYFILE:-notSpecified} != notSpecified ]
}
promptForKey () {
while [ ${VALIDKEYP:-notValid} = notValid ]
do echo "Your workstations host ID# is: `hostid`"
echo -n "Type in the key or [^C] to abort: "
KEY=`/usr/bin/line`
if validKeyP $KEY
then VALIDKEYP=x
else echo "Sorry, invalid key: $KEY"
fi
done
}
#************************************************************
#********** Main piece of code **********
#************************************************************
trap 'echo "
$SCRIPTNAME: Aborted ..."; exit' 2
parseCommand $*
if keyDefinedP
then KEY=`/usr/bin/cat $KEYFILE`
else promptForKey
saveKey
fi
# Well, I think we might be ready to give it a try
echo "Starting up $APPLICATION ..."
/bin/sleep 2
$EMULATOR $SYSOUT -k "$KEY"