#!/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 #for x in "$@"; do echo $x; done #exit 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"