bin/isabelle-process
changeset 52056 fc458f304f93
parent 52054 eaf17514aabd
equal deleted inserted replaced
52055:10bc73197a57 52056:fc458f304f93
    31   echo "    -S           secure mode -- disallow critical operations"
    31   echo "    -S           secure mode -- disallow critical operations"
    32   echo "    -T ADDR      startup process wrapper, with socket address"
    32   echo "    -T ADDR      startup process wrapper, with socket address"
    33   echo "    -W IN:OUT    startup process wrapper, with input/output fifos"
    33   echo "    -W IN:OUT    startup process wrapper, with input/output fifos"
    34   echo "    -e MLTEXT    pass MLTEXT to the ML session"
    34   echo "    -e MLTEXT    pass MLTEXT to the ML session"
    35   echo "    -m MODE      add print mode for output"
    35   echo "    -m MODE      add print mode for output"
       
    36   echo "    -o OPTION    override Isabelle system OPTION (via NAME=VAL or NAME)"
    36   echo "    -q           non-interactive session"
    37   echo "    -q           non-interactive session"
    37   echo "    -r           open heap file read-only"
    38   echo "    -r           open heap file read-only"
    38   echo "    -w           reset write permissions on OUTPUT"
    39   echo "    -w           reset write permissions on OUTPUT"
    39   echo
    40   echo
    40   echo "  INPUT (default \"$ISABELLE_LOGIC\") and OUTPUT specify in/out heaps."
    41   echo "  INPUT (default \"$ISABELLE_LOGIC\") and OUTPUT specify in/out heaps."
    61 SECURE=""
    62 SECURE=""
    62 WRAPPER_SOCKET=""
    63 WRAPPER_SOCKET=""
    63 WRAPPER_FIFOS=""
    64 WRAPPER_FIFOS=""
    64 MLTEXT=""
    65 MLTEXT=""
    65 MODES=""
    66 MODES=""
       
    67 declare -a SYSTEM_OPTIONS=()
    66 TERMINATE=""
    68 TERMINATE=""
    67 READONLY=""
    69 READONLY=""
    68 NOWRITE=""
    70 NOWRITE=""
    69 
    71 
    70 while getopts "IPST:W:e:m:qrw" OPT
    72 while getopts "IPST:W:e:m:o:qrw" OPT
    71 do
    73 do
    72   case "$OPT" in
    74   case "$OPT" in
    73     I)
    75     I)
    74       ISAR=true
    76       ISAR=true
    75       ;;
    77       ;;
    92       if [ -z "$MODES" ]; then
    94       if [ -z "$MODES" ]; then
    93         MODES="\"$OPTARG\""
    95         MODES="\"$OPTARG\""
    94       else
    96       else
    95         MODES="\"$OPTARG\", $MODES"
    97         MODES="\"$OPTARG\", $MODES"
    96       fi
    98       fi
       
    99       ;;
       
   100     o)
       
   101       SYSTEM_OPTIONS["${#SYSTEM_OPTIONS[@]}"]="$OPTARG"
    97       ;;
   102       ;;
    98     q)
   103     q)
    99       TERMINATE=true
   104       TERMINATE=true
   100       ;;
   105       ;;
   101     r)
   106     r)
   213   [ -p "${FIFOS[0]}" ] || fail "Bad input fifo: ${FIFOS[0]}"
   218   [ -p "${FIFOS[0]}" ] || fail "Bad input fifo: ${FIFOS[0]}"
   214   [ -p "${FIFOS[1]}" ] || fail "Bad output fifo: ${FIFOS[1]}"
   219   [ -p "${FIFOS[1]}" ] || fail "Bad output fifo: ${FIFOS[1]}"
   215   MLTEXT="$MLTEXT; Isabelle_Process.init_fifos \"${FIFOS[0]}\" \"${FIFOS[1]}\";"
   220   MLTEXT="$MLTEXT; Isabelle_Process.init_fifos \"${FIFOS[0]}\" \"${FIFOS[1]}\";"
   216 else
   221 else
   217   ISABELLE_PROCESS_OPTIONS="$ISABELLE_TMP/options"
   222   ISABELLE_PROCESS_OPTIONS="$ISABELLE_TMP/options"
   218   "$ISABELLE_TOOL" options -x "$ISABELLE_PROCESS_OPTIONS" || fail "Failed to retrieve options"
   223   "$ISABELLE_TOOL" options -x "$ISABELLE_PROCESS_OPTIONS" -- "${SYSTEM_OPTIONS[@]}" || \
       
   224     fail "Failed to retrieve Isabelle system options"
   219   if [ "$INPUT" != RAW_ML_SYSTEM -a "$INPUT" != RAW ]; then
   225   if [ "$INPUT" != RAW_ML_SYSTEM -a "$INPUT" != RAW ]; then
   220     MLTEXT="Options.load_default () handle _ => exit 2; $MLTEXT"
   226     MLTEXT="Options.load_default () handle _ => exit 2; $MLTEXT"
   221   fi
   227   fi
   222   if [ -n "$PROOFGENERAL" ]; then
   228   if [ -n "$PROOFGENERAL" ]; then
   223     MLTEXT="$MLTEXT; ProofGeneral.init ();"
   229     MLTEXT="$MLTEXT; ProofGeneral.init ();"