diff options
author | Makarius Wenzel <makarius@sketis.net> | 2009-05-30 20:56:04 +0000 |
---|---|---|
committer | Makarius Wenzel <makarius@sketis.net> | 2009-05-30 20:56:04 +0000 |
commit | 6d278e30b43a1d060f21e9b39d8cfecebebb5d61 (patch) | |
tree | cc75f4db48f1226c8c9fed122cc1a0a551f88074 /isar/interface | |
parent | 21e826b7cc3076364d72f6d4e453d4ffffed0982 (diff) |
more robust treatment of options and arguments (via arrays and special @ expansion) -- allows spaces within parameters;
Diffstat (limited to 'isar/interface')
-rw-r--r-- | isar/interface | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/isar/interface b/isar/interface index bb9a0971..9ca83f3b 100644 --- a/isar/interface +++ b/isar/interface @@ -128,7 +128,8 @@ getoptions() done } -getoptions $PROOFGENERAL_OPTIONS +eval "OPTIONS=($PROOFGENERAL_OPTIONS)" +getoptions "${OPTIONS[@]}" getoptions "$@" shift $(($OPTIND - 1)) @@ -136,12 +137,13 @@ shift $(($OPTIND - 1)) # args +declare -a FILES=() + if [ "$#" -eq 0 ]; then - FILES="Scratch.thy" + FILES+=("Scratch.thy") else - FILES="" while [ "$#" -gt 0 ]; do - FILES="$FILES '$1'" + FILES+=("$1") shift done fi @@ -177,14 +179,14 @@ if [ "$START_PG" = false ]; then else - ARGS="" + declare -a ARGS=() - [ -n "$GEOMETRY" ] && ARGS="$ARGS -geometry '$GEOMETRY'" + [ -n "$GEOMETRY" ] && ARGS+=("-geometry" "$GEOMETRY") - [ "$INITFILE" = false ] && ARGS="$ARGS -q" + [ "$INITFILE" = false ] && ARGS+=("-q") if [ "$WINDOWSYSTEM" = false ]; then - ARGS="$ARGS -nw" + ARGS+=("-nw") XSYMBOL=false elif [ -z "$DISPLAY" ]; then XSYMBOL=false @@ -192,26 +194,26 @@ else [ -n "$XSYMBOL_INSTALLFONTS" -a "$XSYMBOL_SETUP" = true ] && installfonts fi - ARGS="$ARGS -l '$SUPER/isar/interface-setup.el'" + ARGS+=("-l" "$SUPER/isar/interface-setup.el") if [ -n "$KEYWORDS" ]; then if [ -f "$ISABELLE_HOME_USER/etc/isar-keywords-$KEYWORDS.el" ]; then - ARGS="$ARGS -l '$ISABELLE_HOME_USER/etc/isar-keywords-$KEYWORDS.el'" + ARGS+=("-l" "$ISABELLE_HOME_USER/etc/isar-keywords-$KEYWORDS.el") elif [ -f "$ISABELLE_HOME/etc/isar-keywords-$KEYWORDS.el" ]; then - ARGS="$ARGS -l '$ISABELLE_HOME/etc/isar-keywords-$KEYWORDS.el'" + ARGS+=("-l" "$ISABELLE_HOME/etc/isar-keywords-$KEYWORDS.el") else fail "No isar-keywords file for '$KEYWORDS'" fi elif [ -f "$ISABELLE_HOME_USER/etc/isar-keywords.el" ]; then - ARGS="$ARGS -l '$ISABELLE_HOME_USER/etc/isar-keywords.el'" + ARGS+=("-l" "$ISABELLE_HOME_USER/etc/isar-keywords.el") elif [ -f "$ISABELLE_HOME/etc/isar-keywords.el" ]; then - ARGS="$ARGS -l '$ISABELLE_HOME/etc/isar-keywords.el'" + ARGS+=("-l" "$ISABELLE_HOME/etc/isar-keywords.el") fi for FILE in "$ISABELLE_HOME/etc/proofgeneral-settings.el" \ "$ISABELLE_HOME_USER/etc/proofgeneral-settings.el" do - [ -f "$FILE" ] && ARGS="$ARGS -l '$FILE'" + [ -f "$FILE" ] && ARGS+=("-l" "$FILE") done case "$LOGIC" in @@ -230,6 +232,6 @@ else export ISABELLE_OPTIONS XSYMBOL_FONTSIZE - eval exec "$PROGNAME" "$ARGS" "$FILES" + exec "$PROGNAME" "${ARGS[@]}" "${FILES[@]}" fi |