From 0704402930ff46dc8b10f7145265ddd4e386df09 Mon Sep 17 00:00:00 2001 From: Abe Jellinek Date: Mon, 23 Nov 2020 18:43:58 -0800 Subject: [PATCH 1/3] Rename `run-medley` args, pass unknowns through. This allows for a more consistent command-line interface that doesn't have to duplicate lde's argument parsing. We handle four arguments that are inconvenient when calling lde directly or that require setting environment variables, and then the rest is passed through. At this point, `run-medley-mac` shouldn't be necessary, but I haven't tested this revised script on a Mac yet, so I'm leaving it be for now. --- run-medley | 220 +++++++++++++++-------------------------------------- 1 file changed, 62 insertions(+), 158 deletions(-) diff --git a/run-medley b/run-medley index 9a58f644..6f9869b0 100755 --- a/run-medley +++ b/run-medley @@ -2,160 +2,98 @@ # # Run Medley # -# Syntax: run-medley [-nogreet][-xns][-noxns] [-geometry pixelgeometry] -# [-display xdisplay-device] [-screensize pixelgeometry] -# [-raw] [-t xtimeout][-prog executable-program] -# [-vmem savevmemfilename] | -# [-m memorylimit] [-kbd keyboardtype] [-key key] -# [sysoutfilename | -lfg | -lisp | -full | -# -{name of any in the sysouts} ] -# -# -xns means leave unix xns running -# -noxns means suppress Lisp xns. - -# LDESRCESYSOUT -# LDESOURCESYSOUT SYSOUT full-file name you want to run - -# LDEDESTSYSOUT SYSOUT name for destination of SAVEVM/LOGOUT - -# LDEKBDTYPE -# type2 -# type3 -# type4 -# jle -# as3000j -# LDEFILETIMEOUT - -export HOSTNAME=`hostname` -export OSVERSION=`uname -r` +# Syntax: run-medley [--geometry WIDTHxHEIGHT] \ +# [--display X_DISPLAY] \ +# [--save FILE] \ +# [--load URL_OR_FILE] # Directory variables are accessible from Lisp via UNIX-GETENV -if [ -z "$MEDLEYDIR" ] ; then export MEDLEYDIR=`pwd`; fi -if [ ! -d $MEDLEYDIR/loadups ] ; then - echo MEDLEYDIR not found: "$MEDLEYDIR" - exit 1 +inferred_medleydir=false + +if [ -z "$MEDLEYDIR" ] ; then + # the user is usually running this script from medley/, so let's try that + export MEDLEYDIR=`pwd` + inferred_medleydir=true fi -if [ -z "$MAIKODIR" ] ; then - export MAIKODIR="$MEDLEYDIR/../maiko" - if [ ! -d "$MAIKODIR"/bin ] ; then - echo "MAIKODIR not found: $MAIKODIR" +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 setting the MEDLEYDIR environment variable to the right location." + fi + exit 1 +fi + +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 fi export LDEINIT="$MEDLEYDIR/greetfiles/LOCAL-INIT" +passthrough_args="" mem="-m 256" # Default, has to be set -#geometry="-g 1060x790" # MBA screensize -geometry="-g 1440x900" -screensize="-sc 1440x900" +geometry="-g 1280x720" + + +# keyboard types: x, type2, type3, type4, jle, as3000j + export LDEKBDTYPE=x -ICONSPEC=" " export LDEFILETIMEOUT=60 export TAKEXNSDOWN=0 export LDELISPXNS=0 + #default is no lispxns while [ "$#" -ne 0 ]; do case "$1" in - "-m") - mem="-m $2" + "--geometry") + geometry="-g $2 -sc $2" shift ;; - "-xlisp") - export LDESRCESYSOUT="$MEDLEYDIR/loadups/xlisp.sysout" - ;; - "-lisp") - export LDESRCESYSOUT="$MEDLEYDIR/loadups/lisp.sysout" - ;; - "-xfull35") - export LDESRCESYSOUT="$MEDLEYDIR/loadups/xfull35.sysout" - ;; - "-full") - export LDESRCESYSOUT="$MEDLEYDIR/loadups/full.sysout" - ;; - "-lfg" | "-lfg35" | "-xlfg35") - export LDESRCESYSOUT="$LFGPARSERDIR/release/lfg35.sysout" - ICONSPEC="-iconbitmap $LFGPARSERDIR/release/lfg.xbm -icontitle Xerox" - ;; - "-nogreet") - export LDEINIT="" - ;; - "-greet") - export LDEINIT="$2" - shift - ;; - "-xns") - export TAKEXNSDOWN=1 - export LDELISPXNS=1 - ;; - "-noxns") - export TAKEXNSDOWN=0 - export LDELISPXNS=0 - ;; - "-raw") - unset DISPLAY - ;; - "-geometry") - geometry="-g $2" - shift - ;; - "-screensize") - screensize="-sc $2" - shift - ;; - "-display") + "--display") export DISPLAY=$2 shift ;; - "-t") - xtimeout=$2 - shift - ;; - "-prog") - progparam=$2 - shift - ;; - "-vmem") + "--save") export LDEDESTSYSOUT=$2 shift ;; - "-kbd") - export LDEKBDTYPE=$2 + "--load") + export LDESRCESYSOUT=$2 shift ;; *) - # anything else is a public sysout name - case "$1" in - "-"*) - name=`expr substr $1 2 999` - export LDESRCESYSOUT="$MEDLEYDIR/loadups/${name}.sysout" - ;; - *) # not an option so must be a sysout name - export LDESRCESYSOUT=$1 ;; - esac + passthrough_args="$passthrough_args $1" # don't know what it means? + # just pass it through to lde ;; esac shift done -if [ -z "$LDEDESTSYSOUT" ] ; then - if [ -f /$HOSTNAME/$LOGNAME/lisp.virtualmem ]; then - export LDEDESTSYSOUT=/$HOSTNAME/$LOGNAME/lisp.virtualmem - elif [ -f ~/lisp.virtualmem ]; then - export LDEDESTSYSOUT=~/lisp.virtualmem - elif [ -d /$HOSTNAME/$LOGNAME ]; then - export LDEDESTSYSOUT=/$HOSTNAME/$LOGNAME/lisp.virtualmem - fi -fi - if [ -z "$LDESRCESYSOUT" ] ; then - export LDESRCESYSOUT="$LDEDESTSYSOUT" + export LDESRCESYSOUT="$MEDLEYDIR/loadups/xfull35.sysout" fi @@ -163,19 +101,14 @@ fi # # switch (`/usr/bin/hostinfo keyboardtype`) # # endsw # fi -echo "keyboard type is " $LDEKBDTYPE +echo "keyboard type is" $LDEKBDTYPE export INMEDLEY=1 -echo "sysout is " $LDESRCESYSOUT +echo "sysout is" $LDESRCESYSOUT #version = `medley-lisp-version $LDESRCESYSOUT` version="35010" -if [ "$LDELISPXNS" -ne "0" ] ; then - prog="ldeether" -else - prog="lde" - echo "running without xns protocols" -fi +prog="lde" case "$version" in "35000") version="3.5" @@ -183,43 +116,14 @@ case "$version" in "35010") version="3.501" ;; - *) - version="3.5" - ;; esac echo "using emulator version $version" -case "$version" in - "3.5"|"3.501") - - export PATH=.:"$PATH" - old_wd=`pwd` - cd "$MAIKODIR"/bin - export PATH=$MAIKODIR/`osversion`.`machinetype`:"$PATH" - cd $old_wd - - # if ${?DISPLAY} then # we are running under X - $prog $mem $geometry $screensize $ICONSPEC - # else $prog $mem - # endif - ;; - - *) echo HMM - -esac - -# -# Now we are done, so clean up after ourselves -# -cleanup: - -# if ${?DISPLAY} then -# # do X cleanup -# else -# # reset -# endif - - - +export PATH=.:"$PATH" +old_wd=`pwd` +cd "$MAIKODIR"/bin +export PATH=$MAIKODIR/`osversion`.`machinetype`:"$PATH" +cd $old_wd +$prog $mem $geometry $passthrough_args From f78657b1739b09567d805ed7eb5249305ba8671f Mon Sep 17 00:00:00 2001 From: Abe Jellinek Date: Mon, 23 Nov 2020 18:52:31 -0800 Subject: [PATCH 2/3] run-medley: remove old/inaccurate comments. --- run-medley | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/run-medley b/run-medley index 6f9869b0..1f8823e9 100755 --- a/run-medley +++ b/run-medley @@ -51,21 +51,16 @@ export LDEINIT="$MEDLEYDIR/greetfiles/LOCAL-INIT" passthrough_args="" mem="-m 256" # Default, has to be set -# MBA screensize geometry="-g 1280x720" # keyboard types: x, type2, type3, type4, jle, as3000j export LDEKBDTYPE=x - export LDEFILETIMEOUT=60 export TAKEXNSDOWN=0 export LDELISPXNS=0 -#default is no lispxns - - while [ "$#" -ne 0 ]; do case "$1" in "--geometry") @@ -96,11 +91,6 @@ if [ -z "$LDESRCESYSOUT" ] ; then export LDESRCESYSOUT="$MEDLEYDIR/loadups/xfull35.sysout" fi - -# if [ ! -z "$LDEKBDTYPE" ] ; then -# # switch (`/usr/bin/hostinfo keyboardtype`) -# # endsw -# fi echo "keyboard type is" $LDEKBDTYPE export INMEDLEY=1 @@ -119,7 +109,6 @@ case "$version" in esac echo "using emulator version $version" - export PATH=.:"$PATH" old_wd=`pwd` cd "$MAIKODIR"/bin From c9c0113258f4a5fcb9d74abfc2368fc8d0c877f5 Mon Sep 17 00:00:00 2001 From: Abe Jellinek Date: Mon, 23 Nov 2020 18:59:28 -0800 Subject: [PATCH 3/3] run-medley: quote our variables for safety. --- run-medley | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/run-medley b/run-medley index 1f8823e9..094e054d 100755 --- a/run-medley +++ b/run-medley @@ -13,11 +13,11 @@ inferred_medleydir=false if [ -z "$MEDLEYDIR" ] ; then # the user is usually running this script from medley/, so let's try that - export MEDLEYDIR=`pwd` + export MEDLEYDIR="`pwd`" inferred_medleydir=true fi -if [ ! -d $MEDLEYDIR/loadups ] ; then +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." @@ -38,7 +38,7 @@ if [ -z "$MAIKODIR" ] ; then inferred_maikodir=true fi -if [ ! -d "$MAIKODIR"/bin ] ; then +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." @@ -68,15 +68,15 @@ while [ "$#" -ne 0 ]; do shift ;; "--display") - export DISPLAY=$2 + export DISPLAY="$2" shift ;; "--save") - export LDEDESTSYSOUT=$2 + export LDEDESTSYSOUT="$2" shift ;; "--load") - export LDESRCESYSOUT=$2 + export LDESRCESYSOUT="$2" shift ;; *) @@ -91,10 +91,10 @@ if [ -z "$LDESRCESYSOUT" ] ; then export LDESRCESYSOUT="$MEDLEYDIR/loadups/xfull35.sysout" fi -echo "keyboard type is" $LDEKBDTYPE +echo "keyboard type is $LDEKBDTYPE" export INMEDLEY=1 -echo "sysout is" $LDESRCESYSOUT +echo "sysout is $LDESRCESYSOUT" #version = `medley-lisp-version $LDESRCESYSOUT` version="35010" @@ -109,10 +109,10 @@ case "$version" in esac echo "using emulator version $version" -export PATH=.:"$PATH" +export PATH=".:$PATH" old_wd=`pwd` -cd "$MAIKODIR"/bin -export PATH=$MAIKODIR/`osversion`.`machinetype`:"$PATH" -cd $old_wd +cd "$MAIKODIR/bin" +export PATH="$MAIKODIR/`osversion`.`machinetype`:$PATH" +cd "$old_wd" $prog $mem $geometry $passthrough_args