211 lines
5.5 KiB
Bash
Executable File
211 lines
5.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# Run Medley
|
|
#
|
|
# Syntax: run-medley [-noscroll] #turn off scrollbars
|
|
# [--dimensions WIDTHxHEIGHT] # sets both -g -sc
|
|
# [-g WIDTHxHEIGHT]
|
|
# [-sc WIDTHxHEIGHT]
|
|
# [--display X_DISPLAY] # defaults to $DISPLAY or :0
|
|
# [-prog LDEFILE]
|
|
# [--vmem | --vmfile FILE]
|
|
# [--nogreet | --greet FILE |
|
|
# --loadup FILE ]
|
|
# [-n | -nl | -full | -lisp |
|
|
# [SYSOUTFILE]
|
|
|
|
# Variables accessible from Lisp via UNIX-GETENV
|
|
# LDESRCESYSOUT SYSOUT full-file name you want to run
|
|
# LDEDESTSYSOUT name for destination of SaveVM/LOGOUT
|
|
# MEDLEYDIR used by init file to set other path variables
|
|
|
|
inferred_medleydir=false
|
|
|
|
if [ -z "$MEDLEYDIR" ] ; then
|
|
export MEDLEYDIR="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
|
inferred_medleydir=true
|
|
fi
|
|
|
|
if [ ! -d "$MEDLEYDIR/loadups" ] ; then
|
|
echo "MEDLEYDIR has no loadups: $MEDLEYDIR"
|
|
if [ $inferred_medleydir = true ] ; then
|
|
echo "I tried to infer it based on your working directory, but that didn't work."
|
|
echo "Try cd there or setting the MEDLEYDIR environment variable to its location."
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
# set defaults, overridden if suppplied explicitly
|
|
|
|
prog="lde"
|
|
pass=""
|
|
mem="-m 256"
|
|
scroll=22
|
|
noscroll=""
|
|
display=""
|
|
title="Medley Interlisp"
|
|
|
|
if [ -z "$LDEDESTSYSOUT" ] ; then
|
|
if [ -z "$LOGINDIR" ] ; then
|
|
export LDEDESTSYSOUT="${HOME}/lisp.virtualmem"
|
|
else
|
|
export LDEDESTSYSOUT="${LOGINDIR}/lisp.virtualmem"
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$LDEINIT" ] ; then
|
|
export LDEINIT="$MEDLEYDIR/greetfiles/MEDLEYDIR-INIT"
|
|
fi
|
|
|
|
while [ "$#" -ne 0 ]; do
|
|
case "$1" in
|
|
-loadup)
|
|
# Keep (GREET) from finding a different init file
|
|
mkdir -p $MEDLEYDIR/tmp/logindir
|
|
export LOGINDIR=$MEDLEYDIR/tmp/logindir
|
|
export MEDLEYLOADUP="$2"
|
|
export LDEINIT="$2"
|
|
shift
|
|
;;
|
|
-nogreet | --nogreet)
|
|
# Keep (GREET) from finding an init file
|
|
mkdir -p $MEDLEYDIR/tmp/logindir
|
|
export LOGINDIR=$MEDLEYDIR/tmp/logindir
|
|
export LDEINIT="$MEDLEYDIR/greetfiles/NOGREET"
|
|
;;
|
|
-greet | --greet)
|
|
export LDEINIT="$2"
|
|
shift
|
|
;;
|
|
-noscroll)
|
|
scroll=0
|
|
noscroll="-noscroll"
|
|
;;
|
|
--dimensions | -dimensions)
|
|
sw=`expr "$2" : "\([0-9]*\)x[0-9]*$"`
|
|
sh=`expr "$2" : "[0-9]*x\([0-9]*\)$"`
|
|
if [ -n "$sw" -a -n "$sh" ] ; then
|
|
sw=$(( (31+$sw)/32*32 ))
|
|
gw=$(( $scroll+$sw ))
|
|
gh=$(( $scroll+$sh ))
|
|
geometry="-g ${gw}x${gh}"
|
|
screensize="-sc ${sw}x${sh}"
|
|
fi
|
|
shift
|
|
;;
|
|
--geometry | -geometry | -g)
|
|
geometry="-g $2"
|
|
shift
|
|
;;
|
|
--screensize | -screensize | -sc)
|
|
screensize="-sc $2"
|
|
shift
|
|
;;
|
|
--display | -d)
|
|
display="-display $2"
|
|
shift
|
|
;;
|
|
-prog)
|
|
prog="$2"
|
|
shift
|
|
;;
|
|
-m | -mem)
|
|
mem="-m $2 "
|
|
shift
|
|
;;
|
|
-title)
|
|
if [ -n "$2" ] ; then
|
|
title="$2"
|
|
fi
|
|
shift
|
|
;;
|
|
-vmem | --vmem | -vmfile)
|
|
export LDEDESTSYSOUT="$2"
|
|
shift
|
|
;;
|
|
-full)
|
|
export LDESRCESYSOUT="$MEDLEYDIR/loadups/full.sysout"
|
|
;;
|
|
-lisp)
|
|
export LDESRCESYSOUT="$MEDLEYDIR/loadups/lisp.sysout"
|
|
;;
|
|
-n | -new | -newfull)
|
|
export LDESRCESYSOUT="$MEDLEYDIR/tmp/full.sysout"
|
|
;;
|
|
-nl | -newlisp)
|
|
export LDESRCESYSOUT="$MEDLEYDIR/tmp/lisp.sysout"
|
|
;;
|
|
-NF)
|
|
pass="$pass $1" # for making init, don't fork
|
|
;;
|
|
-*)
|
|
pass="$pass $1 $2"
|
|
shift
|
|
;;
|
|
*)
|
|
echo sysout "$1"
|
|
export LDESRCESYSOUT="$1"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "$LDESRCESYSOUT" ] ; then
|
|
if [ -f "$LDEDESTSYSOUT" ] ; then
|
|
export LDESRCESYSOUT="$LDEDESTSYSOUT"
|
|
else
|
|
export LDESRCESYSOUT="$MEDLEYDIR/loadups/full.sysout"
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$geometry" ] ; then
|
|
# maiko guesses wrong
|
|
geometry="-g 1440x900"
|
|
screensize="-sc 1440x900"
|
|
fi
|
|
|
|
if [ -z "${LDEKBDTYPE}" ]; then
|
|
export LDEKBDTYPE="X"
|
|
fi
|
|
|
|
if ! command -v "$prog" > /dev/null 2>&1; then
|
|
# if lde is already on path, don't reset it
|
|
# otherwise check for MAIKODIR
|
|
|
|
if [ -z "$MAIKODIR" ] ; then
|
|
# try two options relative to MEDLEYDIR: ./maiko and ../maiko
|
|
MAIKODIR="$MEDLEYDIR/../maiko"
|
|
if ! command -v "$MAIKODIR/bin/osversion" > /dev/null 2>&1; then
|
|
MAIKODIR="$MEDLEYDIR/maiko"
|
|
fi
|
|
fi
|
|
|
|
if ! command -v "$MAIKODIR/bin/osversion" > /dev/null 2>&1; then
|
|
echo "Could not find 'lde' on PATH"
|
|
echo "nor MAIKODIR with 'bin/osversion' (to look for it)"
|
|
exit 1
|
|
fi
|
|
|
|
oldpath="$PATH"
|
|
oldpwd=`pwd`
|
|
PATH=.:"$PATH"
|
|
cd "$MAIKODIR"/bin
|
|
osv=`osversion`
|
|
mct=`machinetype`
|
|
newpath="$MAIKODIR"/"$osv.$mct"
|
|
PATH="$newpath":"$oldpath"
|
|
cd "$oldpwd"
|
|
if ! command -v $prog > /dev/null 2>&1; then
|
|
echo $prog not found in $newpath
|
|
echo osversion = $osv
|
|
echo machinetype = $mct
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "running: $prog $display $noscroll $geometry $screensize -title \"$title\" $mem $pass $LDESRCESYSOUT"
|
|
echo "greet: $LDEINIT"
|
|
|
|
export INMEDLEY=1
|
|
|
|
"$prog" $display $noscroll $geometry $screensize $mem -title "$title" $pass "$LDESRCESYSOUT"
|