equal
deleted
inserted
replaced
|
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 |