| 4426 |      1 | #!/bin/bash
 | 
|  |      2 | #
 | 
|  |      3 | # $Id$
 | 
|  |      4 | #
 | 
|  |      5 | # MLWorks startup script (for 1.0r2 or later).
 | 
|  |      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
 | 
| 4505 |     23 |   EXIT="fun exit 0 = (OS.Process.exit OS.Process.success): unit | exit _ = OS.Process.exit OS.Process.failure;"
 | 
| 4426 |     24 |   MLWORKS="mlworks-basis -tty"
 | 
|  |     25 | else
 | 
| 4505 |     26 |   EXIT=""
 | 
| 4426 |     27 |   MLWORKS="mlimage -load $INFILE -tty"
 | 
|  |     28 | fi
 | 
|  |     29 | 
 | 
| 4505 |     30 | if [ -z "$OUTFILE" ]; then
 | 
|  |     31 |   COMMIT='fun commit () = (TextIO.output (TextIO.stdErr, "Error - Database is not opened for writing.\n"); false);'
 | 
|  |     32 | else
 | 
|  |     33 |   COMMIT="fun commit () = (Shell.saveImage (\"$OUTFILE\", false); true);"
 | 
|  |     34 |   [ -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; }
 | 
|  |     35 | fi
 | 
| 4426 |     36 | 
 | 
|  |     37 | 
 | 
|  |     38 | ## run it!
 | 
|  |     39 | 
 | 
| 4505 |     40 | MLTEXT="$EXIT $COMMIT $MLTEXT"
 | 
|  |     41 | MLEXIT="commit();"
 | 
| 4426 |     42 | 
 | 
| 4505 |     43 | if [ -z "$TERMINATE" ]; then
 | 
|  |     44 |   FEEDER_OPTS="-s"
 | 
| 4426 |     45 | else
 | 
| 4505 |     46 |   FEEDER_OPTS="-q"
 | 
| 4426 |     47 | fi
 | 
|  |     48 | 
 | 
| 4505 |     49 | $ISABELLE_HOME/lib/scripts/feeder -p -h "$MLTEXT" -t "$MLEXIT" $FEEDER_OPTS | \
 | 
|  |     50 |   { read FPID; $ML_HOME/$MLWORKS $ML_OPTIONS 2>&1; RC=$?; kill -HUP $FPID; exit $RC; }
 | 
|  |     51 | RC=$?
 | 
|  |     52 | 
 | 
|  |     53 | [ -n "$OUTFILE" -a -f "$OUTFILE" -a -n "$NOWRITE" ] && chmod -w "$OUTFILE"
 | 
| 4426 |     54 | 
 | 
|  |     55 | exit $RC
 |