mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-22 02:15:28 +00:00
204 lines
4.8 KiB
Bash
Executable File
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"
|
|
|
|
|
|
|