aboutsummaryrefslogtreecommitdiffstats
path: root/launcher
diff options
context:
space:
mode:
authorOmair Majid <omajid@redhat.com>2011-10-25 10:02:45 -0400
committerOmair Majid <omajid@redhat.com>2011-10-25 10:02:45 -0400
commit0b7d179faf75ca7829093a508ba3352bfd6fa0e4 (patch)
tree27737d09da1da2e5485f62a99042a54be2606568 /launcher
parenta69568af20993810f431b3af9b2b5fb01db94890 (diff)
PR804: javaws launcher incorrectly handles file names with spaces
2011-10-25 Omair Majid <omajid@redhat.com> PR804: javaws launcher incorrectly handles file names with spaces * NEWS: Update. * launcher/javaws.in: Use bash arrays to store arguments to handle filenames with spaces correctly.
Diffstat (limited to 'launcher')
-rw-r--r--launcher/javaws.in54
1 files changed, 42 insertions, 12 deletions
diff --git a/launcher/javaws.in b/launcher/javaws.in
index df7a28d..8bece0c 100644
--- a/launcher/javaws.in
+++ b/launcher/javaws.in
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
JAVA=@JAVA@
LAUNCHER_BOOTCLASSPATH=@LAUNCHER_BOOTCLASSPATH@
@@ -8,27 +8,57 @@ BINARY_LOCATION=@JAVAWS_BIN_LOCATION@
PROGRAM_NAME=javaws
CP=@JRE@/lib/rt.jar
-JAVA_ARGS=
-ARGS=
+JAVA_ARGS=( )
+ARGS=( )
+COMMAND=()
+
+i=0
+j=0
while [ "$#" -gt "0" ]; do
case "$1" in
-J*)
- JAVA_ARGS="${JAVA_ARGS} ${1##-J}"
+ JAVA_ARGS[$i]="${1##-J}"
+ i=$((i+1))
;;
*)
- ARGS="${ARGS} $1"
+ ARGS[$j]="$1"
+ j=$((j+1))
;;
esac
shift
done
-${JAVA} ${LAUNCHER_BOOTCLASSPATH} ${LAUNCHER_FLAGS} \
- ${JAVA_ARGS} \
- -classpath ${CP} \
- -Dicedtea-web.bin.name=${PROGRAM_NAME} \
- -Dicedtea-web.bin.location=${BINARY_LOCATION} \
- ${CLASSNAME} \
- ${ARGS}
+k=0
+COMMAND[k]="${JAVA}"
+k=$((k+1))
+COMMAND[k]="${LAUNCHER_BOOTCLASSPATH}"
+k=$((k+1))
+COMMAND[k]="${LAUNCHER_FLAGS}"
+k=$((k+1))
+i=0
+while [ "$i" -lt "${#JAVA_ARGS[@]}" ]; do
+ COMMAND[k]="${JAVA_ARGS[$i]}"
+ i=$((i+1))
+ k=$((k+1))
+done
+COMMAND[k]="-classpath"
+k=$((k+1))
+COMMAND[k]="${CP}"
+k=$((k+1))
+COMMAND[k]="-Dicedtea-web.bin.name=${PROGRAM_NAME}"
+k=$((k+1))
+COMMAND[k]="-Dicedtea-web.bin.location=${BINARY_LOCATION}"
+k=$((k+1))
+COMMAND[k]="${CLASSNAME}"
+k=$((k+1))
+j=0
+while [ "$j" -lt "${#ARGS[@]}" ]; do
+ COMMAND[k]="${ARGS[$j]}"
+ j=$((j+1))
+ k=$((k+1))
+done
+
+"${COMMAND[@]}"
exit $?