15 echo "Unable to create output heap file: \"$OUTFILE\"" >&2 |
15 echo "Unable to create output heap file: \"$OUTFILE\"" >&2 |
16 exit 2 |
16 exit 2 |
17 } |
17 } |
18 |
18 |
19 |
19 |
|
20 ## version specific stuff |
|
21 |
|
22 EXIT="" |
|
23 COMMIT="" |
|
24 FIXNAME="" |
|
25 |
|
26 case "$ML_SYSTEM" in |
|
27 smlnj-1.0[678]*) |
|
28 EXIT="val exit = System.Unix.exit;" |
|
29 COMMIT="fun commit () = not (exportML\"$OUTFILE\");" |
|
30 COMMIT_RO='fun commit () = (output (std_err, "Error - Database is not opened for writing.\\n"); false);' |
|
31 ;; |
|
32 smlnj-1.09*) |
|
33 EXIT="fun exit 0 : unit = OS.Process.exit OS.Process.success | exit _ = OS.Process.exit OS.Process.failure;" |
|
34 COMMIT="fun commit () = not (SMLofNJ.exportML\"$OUTFILE\");" |
|
35 COMMIT_RO='fun commit () = (TextIO.output (TextIO.stdErr, "Error - Database is not opened for writing.\\n"); false);' |
|
36 FIXNAME=true |
|
37 ;; |
|
38 esac |
|
39 |
|
40 |
20 ## prepare databases |
41 ## prepare databases |
21 |
42 |
22 EXIT="" |
43 DB="$INFILE" |
23 if [ -z "$INFILE" ]; then |
44 |
24 case "$ML_SYSTEM" in |
45 if [ -n "$DB" ]; then |
25 smlnj-1.0[678]) |
46 DB="@SMLload=$INFILE" |
26 EXIT="val exit = System.Unix.exit;" |
47 EXIT="" |
27 ;; |
|
28 smlnj-1.09*) |
|
29 EXIT="fun exit 0 = OS.Process.exit OS.Process.success | exit _ = OS.Process.exit OS.Process.failure;" |
|
30 ;; |
|
31 esac |
|
32 fi |
48 fi |
33 |
49 |
34 DB="$INFILE" |
|
35 [ -n "$DB" ] && DB="@SMLload=$INFILE" |
|
36 |
|
37 COMMIT="fun commit () = not (exportML\"$OUTFILE\");" |
|
38 |
|
39 if [ -z "$OUTFILE" ]; then |
50 if [ -z "$OUTFILE" ]; then |
40 COMMIT='fun commit () = (output (std_err, "Error - Database is not opened for writing.\n"); false);' |
51 COMMIT="$COMMIT_RO" |
41 elif [ -n "$INFILE" -a ! "$INFILE" -ef "$OUTFILE" ]; then |
52 elif [ -n "$INFILE" -a ! "$INFILE" -ef "$OUTFILE" ]; then |
42 [ -f "$OUTFILE" ] && { rm -f "$OUTFILE" || fail_out; } |
53 [ -f "$OUTFILE" ] && { rm -f "$OUTFILE" || fail_out; } |
43 cp "$INFILE" "$OUTFILE" || fail_out |
54 cp "$INFILE" "$OUTFILE" || fail_out |
44 fi |
55 fi |
45 |
56 |
46 [ -n "$OUTFILE" -a -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; } |
57 [ -n "$OUTFILE" -a -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; } |
47 |
58 |
48 MLTEXT="$EXIT $COMMIT $MLTEXT" |
59 MLTEXT="$EXIT $COMMIT $MLTEXT" |
49 MLEXIT="commit();" |
60 MLEXIT="commit ();" |
50 |
61 |
51 |
62 |
52 ## run it! |
63 ## run it! |
53 |
64 |
54 START_SML="$ML_HOME/sml $ML_OPTIONS $DB" |
65 START_SML="$ML_HOME/sml $ML_OPTIONS $DB" |