lib/scripts/run-smlnj
changeset 3046 6b7935317538
parent 3010 4be22c300966
child 3051 30490aa41356
--- a/lib/scripts/run-smlnj	Thu Apr 24 19:08:32 1997 +0200
+++ b/lib/scripts/run-smlnj	Thu Apr 24 19:41:00 1997 +0200
@@ -17,27 +17,38 @@
 }
 
 
-## prepare databases
+## version specific stuff
 
 EXIT=""
-if [ -z "$INFILE" ]; then
-  case "$ML_SYSTEM" in
-    smlnj-1.0[678])
-      EXIT="val exit = System.Unix.exit;"
-      ;;
-    smlnj-1.09*)
-      EXIT="fun exit 0 = OS.Process.exit OS.Process.success | exit _ = OS.Process.exit OS.Process.failure;"
+COMMIT=""
+FIXNAME=""
+
+case "$ML_SYSTEM" in
+  smlnj-1.0[678]*)
+    EXIT="val exit = System.Unix.exit;"
+    COMMIT="fun commit () = not (exportML\"$OUTFILE\");"
+    COMMIT_RO='fun commit () = (output (std_err, "Error - Database is not opened for writing.\\n"); false);'
     ;;
-  esac
+  smlnj-1.09*)
+    EXIT="fun exit 0 : unit = OS.Process.exit OS.Process.success | exit _ = OS.Process.exit OS.Process.failure;"
+    COMMIT="fun commit () = not (SMLofNJ.exportML\"$OUTFILE\");"
+    COMMIT_RO='fun commit () = (TextIO.output (TextIO.stdErr, "Error - Database is not opened for writing.\\n"); false);'
+    FIXNAME=true
+    ;;
+esac
+
+
+## prepare databases
+
+DB="$INFILE"
+
+if [ -n "$DB" ]; then
+  DB="@SMLload=$INFILE"
+  EXIT=""
 fi
 
-DB="$INFILE"
-[ -n "$DB" ] && DB="@SMLload=$INFILE"
-
-COMMIT="fun commit () = not (exportML\"$OUTFILE\");"
-
 if [ -z "$OUTFILE" ]; then
-  COMMIT='fun commit () = (output (std_err, "Error - Database is not opened for writing.\n"); false);'
+  COMMIT="$COMMIT_RO"
 elif [ -n "$INFILE" -a ! "$INFILE" -ef "$OUTFILE" ]; then
   [ -f "$OUTFILE" ] && { rm -f "$OUTFILE" || fail_out; }
   cp "$INFILE" "$OUTFILE" || fail_out
@@ -46,7 +57,7 @@
 [ -n "$OUTFILE" -a -f "$OUTFILE" ] && { chmod +w "$OUTFILE" || fail_out; }
 
 MLTEXT="$EXIT $COMMIT $MLTEXT"
-MLEXIT="commit();"
+MLEXIT="commit ();"
 
 
 ## run it!
@@ -64,4 +75,11 @@
   RC=$?
 fi
 
+#fix heap file name
+if [ -n "$OUTFILE" -a -n "$FIXNAME" ]; then
+  eval $($ML_HOME/.arch-n-opsys)
+  SUFFIX=$ARCH-$OPSYS
+  [ -f $OUTFILE.$SUFFIX ] && mv $OUTFILE.$SUFFIX $OUTFILE
+fi
+
 exit $RC