| @@ -22,17 +22,6 @@ use_jikes_default=false | |||||
| ant_exec_debug=false | ant_exec_debug=false | ||||
| show_help=false | show_help=false | ||||
| esc_tool=sed | |||||
| # if awk esc_tool is chosen, use nawk when available | |||||
| if [ "$esc_tool" = "awk" ] | |||||
| then | |||||
| awk_exec=awk | |||||
| # Solaris_awk does not support gsub, but Solaris_nawk does | |||||
| # `command -v` behavior is part of posix spec | |||||
| command -v nawk >/dev/null && awk_exec=nawk | |||||
| fi | |||||
| for arg in "$@" ; do | for arg in "$@" ; do | ||||
| if [ "$arg" = "--noconfig" ] ; then | if [ "$arg" = "--noconfig" ] ; then | ||||
| no_config=true | no_config=true | ||||
| @@ -52,35 +41,10 @@ for arg in "$@" ; do | |||||
| # use printf to avoid echo interpretation behaviors such as escapes and line continuation | # use printf to avoid echo interpretation behaviors such as escapes and line continuation | ||||
| # pad the value with X to protect leading/trailing whitespace from subshell output trimming | # pad the value with X to protect leading/trailing whitespace from subshell output trimming | ||||
| esc_arg="X${arg}X" | esc_arg="X${arg}X" | ||||
| case "$esc_tool" in | |||||
| 'sed') | |||||
| # Mac bsd_sed does not support group-0, so pattern uses group-1 | |||||
| # Solaris sed only proceses lines with trailing newline, passing in an extra newline | |||||
| # subshell assignment will trim the added trailing newline | |||||
| esc_arg="$(printf '%s\n' "$esc_arg" | sed -e 's@\([$"\\`]\)@\\\1@g')" | |||||
| ;; | |||||
| 'awk') | |||||
| esc_arg="$(printf '%s' "$esc_arg" | "$awk_exec" '{ gsub(/\\/, "\\\\"); print }' )" | |||||
| esc_arg="$(printf '%s' "$esc_arg" | "$awk_exec" '{ gsub(/\$/, "\\$"); print }' )" | |||||
| esc_arg="$(printf '%s' "$esc_arg" | "$awk_exec" '{ gsub(/\"/, "\\\""); print }' )" | |||||
| esc_arg="$(printf '%s' "$esc_arg" | "$awk_exec" '{ gsub(/`/, "\\`"); print }' )" | |||||
| ;; | |||||
| # 'bash') | |||||
| # # does not depend upon `sed` or `echo` quirks | |||||
| # # tested with bash `[ -n "${BASH_VERSION}" ]` | |||||
| # # tested with zsh `[ -n "${ZSH_NAME}" ]` | |||||
| # # tested with ksh93+ `ksh_ver="$(echo "$KSH_VERSION" | grep -m 1 -o '[0-9]\+' | head -n 1)"; [ "$ksh_ver" -gt 88 ]` | |||||
| # # fails in ksh88, dash, ash | |||||
| # esc_arg="${esc_arg//\\/\\\\}" # must be first since later patterns introduce backslash chars | |||||
| # esc_arg="${esc_arg//\$/\\\$}" | |||||
| # esc_arg="${esc_arg//\"/\\\"}" | |||||
| # esc_arg="${esc_arg//\`/\\\`}" | |||||
| # ;; | |||||
| '*') | |||||
| echo "could not determine escaping tool" | |||||
| exit 1 | |||||
| ;; | |||||
| esac | |||||
| # Mac bsd_sed does not support group-0, so pattern uses group-1 | |||||
| # Solaris sed only proceses lines with trailing newline, passing in an extra newline | |||||
| # subshell assignment will trim the added trailing newline | |||||
| esc_arg="$(printf '%s\n' "$esc_arg" | sed -e 's@\([$"\\`]\)@\\\1@g')" | |||||
| # remove the padding Xs added above | # remove the padding Xs added above | ||||
| esc_arg="${esc_arg#X}" | esc_arg="${esc_arg#X}" | ||||
| esc_arg="${esc_arg%X}" | esc_arg="${esc_arg%X}" | ||||