5 # SML/NJ startup script (for 0.93).
7 # Global vars: INFILE OUTFILE MLTEXT TERMINATE NOWRITE,
15 echo "Unable to create output heap file: \"$OUTFILE\"" >&2
22 if [ -z "$INFILE" ]; then
24 EXIT="val exit = 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\");"
44 MLTEXT="$EXIT $COMMIT $MLTEXT"
50 START_SML="$INFILE $ML_OPTIONS"
52 if [ -n "$TERMINATE" ]; then
53 echo "$MLTEXT" "$MLEXIT" | $START_SML
55 elif [ -z "$MLTEXT" ]; then
56 sh -c "{ $ISABELLE_HOME/lib/scripts/ucat; echo '$MLEXIT'; } | $START_SML"
59 sh -c "{ echo '$MLTEXT'; $ISABELLE_HOME/lib/scripts/ucat; echo '$MLEXIT'; } | $START_SML"
63 [ -n "$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