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