lib/scripts/run-smlnj-0.93
author wenzelm
Fri, 02 Jan 1998 18:40:30 +0100
changeset 4513 6de428eac512
parent 4333 1d326b826851
child 5063 d45ec8d00ab0
permissions -rwxr-xr-x
feeder;
     1 #!/bin/bash
     2 #
     3 # $Id$
     4 #
     5 # SML/NJ startup script (for 0.93).
     6 #
     7 # Global vars: INFILE OUTFILE MLTEXT TERMINATE NOWRITE ISABELLE_TMP,
     8 # and from settings
     9 
    10 
    11 ## diagnostics
    12 
    13 function fail_out()
    14 {
    15   echo "Unable to create output heap file: \"$OUTFILE\"" >&2
    16   exit 2
    17 }
    18 
    19 
    20 ## prepare databases
    21 
    22 if [ -z "$INFILE" ]; then
    23   INFILE="$ML_HOME/sml"
    24   EXIT="val exit: int -> unit = System.Unsafe.CInterface.exit;"
    25 else
    26   EXIT=""
    27 fi
    28 
    29 MOVE=""
    30 
    31 if [ -z "$OUTFILE" ]; then
    32   COMMIT='fun commit () = (output (std_err, "Error - Database is not opened for writing.\n"); false);'
    33 else
    34   if [ "$INFILE" -ef "$OUTFILE" ]; then
    35     OUTDIR=$(dirname "$OUTFILE")/tmp
    36     OUTFILE=$OUTDIR/$(basename "$OUTFILE")
    37     mkdir -p "$OUTDIR" || fail_out
    38     MOVE=true
    39   fi
    40   [ -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; }
    41   COMMIT="fun commit () = not (exportML\"$OUTFILE\");"
    42 fi
    43 
    44 
    45 ## run it!
    46 
    47 MLTEXT="$EXIT $COMMIT $MLTEXT"
    48 MLEXIT="commit();"
    49 
    50 if [ -z "$TERMINATE" ]; then
    51   FEEDER_OPTS=""
    52 else
    53   FEEDER_OPTS="-q"
    54 fi
    55 
    56 $ISABELLE_HOME/lib/scripts/feeder -p -h "$MLTEXT" -t "$MLEXIT" $FEEDER_OPTS | \
    57   { read FPID; $INFILE $ML_OPTIONS; RC=$?; kill -HUP $FPID; exit $RC; }
    58 RC=$?
    59 
    60 
    61 ## fix heap file
    62 
    63 [ -n "$OUTFILE" -a -f "$OUTFILE" -a -n "$NOWRITE" ] && chmod -w "$OUTFILE"
    64 
    65 if [ -n "$MOVE" -a -f "$OUTFILE" ]; then
    66   rm -f "$INFILE" || fail_out
    67   mv "$OUTFILE" "$INFILE" || fail_out
    68 fi
    69 
    70 exit $RC