lib/scripts/run-smlnj
changeset 2302 47e078e60ab1
child 2313 d97eef398257
equal deleted inserted replaced
2301:c72f4f7236b6 2302:47e078e60ab1
       
     1 #!/bin/bash
       
     2 #
       
     3 # SML/NJ startup script (for 1.06 or later).
       
     4 #
       
     5 # $Id$
       
     6 #
       
     7 # Global vars: INFILE OUTFILE COPYDB MLTEXT OPTIONS TERMINATE,
       
     8 # and from settings
       
     9 #
       
    10 # MMW 30-Nov-1996
       
    11 
       
    12 
       
    13 ## diagnostics
       
    14 
       
    15 function fail()
       
    16 {
       
    17   echo "$1"
       
    18   exit 2
       
    19 }
       
    20 
       
    21 
       
    22 ## locations and settings
       
    23 
       
    24 SML="$ML_HOME/bin/sml"
       
    25 
       
    26 
       
    27 ## prepare databases
       
    28 
       
    29 function fail_out()
       
    30 {
       
    31   fail "Unable to create output heap file: \"$OUTFILE\""
       
    32 }
       
    33 
       
    34 if [ -z "$OUTFILE" ]; then
       
    35   DB="$INFILE"
       
    36   COMMIT="fun commit() = output (std_out, \"Error - Database is not opened for writing.\\n\");"
       
    37 elif [ -n "$INFILE" -a "$INFILE" != "$OUTFILE" ]; then           # FIXME ! -ef !?
       
    38   [ -f "$OUTFILE" ] && { rm -f "$OUTFILE" || fail_out }
       
    39   cp "$INFILE" "$OUTFILE" || fail_out
       
    40   chmod +w "$OUTFILE"
       
    41   DB="$INFILE"
       
    42   COMMIT="fun commit() = (exportML\"$OUTFILE\"; ());"
       
    43 else
       
    44   DB="$INFILE"
       
    45   COMMIT="fun commit() = (exportML\"$OUTFILE\"; ());"
       
    46 fi
       
    47 
       
    48 [ -n "$DB" ] && DB="@SMLload=$DB"
       
    49 MLTEXT="$COMMIT $MLTEXT"
       
    50 
       
    51 
       
    52 ## run it!
       
    53 
       
    54 START_SML="$SML $ML_OPTIONS $OPTIONS $DB"
       
    55 
       
    56 if [ -n "$TERMINATE" ]; then
       
    57   echo "$MLTEXT" | $START_SML
       
    58   RC=$?
       
    59 elif [ -z "$MLTEXT" ]; then
       
    60   $START_SML
       
    61   RC=$?
       
    62 else
       
    63   TMP_FILE=/tmp/mltext-$$
       
    64   echo "$MLTEXT" >$TMP_FILE
       
    65   cat $TMP_FILE - | $START_SML
       
    66   RC=$?
       
    67   rm $TMP_FILE
       
    68 fi
       
    69 
       
    70 exit $RC