5 # SML/NJ startup script (for 0.93).
7 # Global vars: INFILE OUTFILE MLTEXT TERMINATE NOWRITE ISABELLE_TMP,
15 echo "Unable to create output heap file: \"$OUTFILE\"" >&2
22 if [ -z "$INFILE" ]; then
24 EXIT="val exit: int -> unit = System.Unsafe.CInterface.exit;"
31 if [ -z "$OUTFILE" ]; then
32 COMMIT='fun commit () = (output (std_err, "Error - Database is not opened for writing.\n"); false);'
34 if [ "$INFILE" -ef "$OUTFILE" ]; then
35 OUTDIR=$(dirname "$OUTFILE")/tmp
36 OUTFILE=$OUTDIR/$(basename "$OUTFILE")
37 mkdir -p "$OUTDIR" || fail_out
40 [ -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; }
41 COMMIT="fun commit () = not (exportML\"$OUTFILE\");"
47 MLTEXT="$EXIT $COMMIT $MLTEXT"
50 if [ -z "$TERMINATE" ]; then
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; }
63 [ -n "$OUTFILE" -a -f "$OUTFILE" -a -n "$NOWRITE" ] && chmod -w "$OUTFILE"
65 if [ -n "$MOVE" -a -f "$OUTFILE" ]; then
66 rm -f "$INFILE" || fail_out
67 mv "$OUTFILE" "$INFILE" || fail_out