| 2349 |      1 | #!/bin/bash -norc
 | 
| 2301 |      2 | #
 | 
| 2314 |      3 | # $Id$
 | 
|  |      4 | #
 | 
| 2301 |      5 | # Poly/ML startup script.
 | 
|  |      6 | #
 | 
| 2349 |      7 | # Global vars: INFILE OUTFILE COPYDB MLTEXT TERMINATE,
 | 
| 2301 |      8 | # and from settings
 | 
|  |      9 | 
 | 
|  |     10 | 
 | 
|  |     11 | ## diagnostics
 | 
|  |     12 | 
 | 
| 2349 |     13 | function fail_out()
 | 
| 2301 |     14 | {
 | 
| 2349 |     15 |   echo "Unable to create output heap file: \"$OUTFILE\"" >&2
 | 
| 2301 |     16 |   exit 2
 | 
|  |     17 | }
 | 
|  |     18 | 
 | 
|  |     19 | 
 | 
|  |     20 | ## locations and settings
 | 
|  |     21 | 
 | 
|  |     22 | ML_DBASE=$ML_HOME/ML_dbase
 | 
|  |     23 | POLY=$ML_HOME/poly
 | 
|  |     24 | DISCGARB=$ML_HOME/discgarb
 | 
|  |     25 | 
 | 
|  |     26 | case "$ML_SYSTEM" in
 | 
| 2349 |     27 |   polyml-3.*)
 | 
| 2314 |     28 |     DISCGARB="$DISCGARB -c"
 | 
| 2301 |     29 |     ;;
 | 
|  |     30 | esac
 | 
|  |     31 | 
 | 
|  |     32 | 
 | 
|  |     33 | ## prepare databases
 | 
|  |     34 | 
 | 
| 2349 |     35 | MLINIT=""
 | 
|  |     36 | 
 | 
| 2301 |     37 | if [ -z "$INFILE" ]; then
 | 
|  |     38 |   INFILE="$ML_DBASE"
 | 
| 2349 |     39 |   MLINIT="val use = PolyML.use; val exit = PolyML.exit; fun init_database () = ();"
 | 
| 2301 |     40 | fi
 | 
|  |     41 | 
 | 
|  |     42 | if [ -z "$OUTFILE" ]; then
 | 
|  |     43 |   DB="$INFILE"
 | 
| 2349 |     44 |   ML_OPTIONS="-r $ML_OPTIONS"  
 | 
|  |     45 | elif [ "$INFILE" -ef "$OUTFILE" ]; then
 | 
| 2301 |     46 |   DB="$INFILE"
 | 
|  |     47 | elif [ -n "$COPYDB" ]; then
 | 
|  |     48 |   cp "$INFILE" "$OUTFILE" || fail_out
 | 
| 2349 |     49 |   chmod +w "$OUTFILE" || fail_out
 | 
| 2301 |     50 |   DB="$OUTFILE"
 | 
|  |     51 | else
 | 
|  |     52 |   [ -f "$OUTFILE" ] && { rm "$OUTFILE" || fail_out }
 | 
| 2349 |     53 |   echo "PolyML.make_database \"$OUTFILE\"; PolyML.quit();" | $POLY -r "$INFILE"
 | 
| 2301 |     54 |   [ -f "$OUTFILE" ] || fail_out
 | 
|  |     55 |   DB="$OUTFILE"
 | 
| 2349 |     56 |   MLINIT="$MLINIT init_database ();"
 | 
| 2301 |     57 | fi
 | 
|  |     58 | 
 | 
|  |     59 | 
 | 
|  |     60 | ## run it!
 | 
|  |     61 | 
 | 
| 2349 |     62 | START_POLY="$POLY $ML_OPTIONS $DB"
 | 
|  |     63 | 
 | 
|  |     64 | [ -n "$MLINIT" ] && MLTEXT="$MLINIT $MLTEXT"
 | 
| 2301 |     65 | 
 | 
|  |     66 | if [ -n "$TERMINATE" ]; then
 | 
| 2349 |     67 |   echo "$MLTEXT" | $START_POLY
 | 
| 2301 |     68 |   RC=$?
 | 
|  |     69 | elif [ -z "$MLTEXT" ]; then
 | 
|  |     70 |   $START_POLY
 | 
|  |     71 |   RC=$?
 | 
|  |     72 | else
 | 
| 2349 |     73 |   { echo "$MLTEXT"; $ISABELLE_HOME/lib/scripts/ucat } | $START_POLY
 | 
| 2301 |     74 |   RC=$?
 | 
|  |     75 | fi
 | 
|  |     76 | 
 | 
| 2314 |     77 | [ $RC -eq 0 -a -n "$OUTFILE" ] && $DISCGARB "$OUTFILE"
 | 
| 2301 |     78 | 
 | 
|  |     79 | exit $RC
 |