#!/bin/sh # Run Medley # # Syntax: run-medley [--dimensions WIDTHxHEIGHT] \ sets both -g -sc # [-g WIDTHxHEIGHT] \ # [-sc WIDTHxHEIGHT] \ # [--display X_DISPLAY] \ # [--vmem | --vmfile FILE] \ # [--nogreet | --greet FILE] \ # [-n | -nl | # [URL_OR_FILE] # Directory variables are 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" passthrough_args="" mem="-m 256" 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/SIMPLE-INIT" fi export LDEKBDTYPE=x while [ "$#" -ne 0 ]; do case "$1" in "-nogreet" | "--nogreet") export LDEINIT="" ;; "-greet" | "--greet") export LDEINIT="$2" shift ;; "--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=$(( 22+$sw )) gh=$(( 22+$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") export DISPLAY="$2" shift ;; "-prog" ) prog="$2" shift ;; "-m" | "-mem" ) mem="-m $2 " 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" ;; "-*") passthrough_args="$passthrough_args $1 $2" echo passing through unrecognized option: "$1" "$2" shift ;; *) export LDESRCESYSOUT="$1" ;; esac shift done # not set on command line 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 case "$LDESRCSYSOUT" in "http:*" | "https:*") echo URL not supported yet exit 1 esac inferred_maikodir=false if [ -z "$MAIKODIR" ] ; then # here we try two options relative to MEDLEYDIR: ./maiko and ../maiko # this is highly imperfect, but the user can always set the env variables export MAIKODIR="$MEDLEYDIR/../maiko" if [ ! -d "$MAIKODIR" ] ; then export MAIKODIR="$MEDLEYDIR/maiko" fi inferred_maikodir=true fi if [ ! -d "$MAIKODIR/bin" ] ; then echo "MAIKODIR has no bin: $MAIKODIR" if [ inferred_maikodir = true ] ; then echo "I tried to infer it based on your working directory, but that didn't work." echo "Try setting the MAIKODIR environment variable to the right location." fi exit 1 fi oldpath="$PATH" export PATH=.:"$PATH" cd "$MAIKODIR"/bin export PATH="$MAIKODIR"/`osversion`.`machinetype`:"$oldpath" cd "$OLDPWD" if ! command -v "$prog" > /dev/null 2>&1; then echo "$prog" not found exit 1 fi echo "running: $prog $geometry $screensize $mem $passthrough_args $LDESRCESYSOUT" echo "greet: $LDEINIT" export INMEDLEY=1 "$prog" $geometry $screensize $mem -t "Medley Interlisp" $passthrough_args "$LDESRCESYSOUT"