4 # Author: Markus Wenzel, TU Muenchen
5 # License: GPL (GNU GENERAL PUBLIC LICENSE)
7 # SML/NJ startup script (for 0.93).
9 export -n INFILE OUTFILE COPYDB COMPRESS MLTEXT TERMINATE NOWRITE
16 echo "Unable to create output heap file: \"$OUTFILE\"" >&2
20 function check_mlhome_file()
22 if [ ! -f "$1" ]; then
23 echo "Unable to locate $1" >&2
24 echo "Please check your ML_HOME setting!" >&2
32 if [ -z "$INFILE" ]; then
34 check_mlhome_file "$INFILE"
35 EXIT="val exit: int -> unit = System.Unsafe.CInterface.exit;"
42 if [ -z "$OUTFILE" ]; then
43 COMMIT='fun commit () = (output (std_err, "Error - Database is not opened for writing.\n"); false);'
45 if [ "$INFILE" -ef "$OUTFILE" ]; then
46 OUTDIR=$(dirname "$OUTFILE")/tmp
47 OUTFILE="$OUTDIR"/$(basename "$OUTFILE")
48 mkdir -p "$OUTDIR" || fail_out
51 [ -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; }
52 COMMIT="fun commit () = not (exportML\"$OUTFILE\");"
58 MLTEXT="$EXIT $COMMIT $MLTEXT"
61 if [ -z "$TERMINATE" ]; then
67 "$ISABELLE_HOME/lib/scripts/feeder" -p -h "$MLTEXT" -t "$MLEXIT" $FEEDER_OPTS | \
68 { read FPID; "$INFILE" $ML_OPTIONS; RC="$?"; kill -HUP "$FPID"; exit "$RC"; }
74 [ -n "$OUTFILE" -a -f "$OUTFILE" -a -n "$NOWRITE" ] && chmod -w "$OUTFILE"
76 if [ -n "$MOVE" -a -f "$OUTFILE" ]; then
77 rm -f "$INFILE" || fail_out
78 mv "$OUTFILE" "$INFILE" || fail_out