diff options
| author | Dennis Camera <dennis.camera@ssrq-sds-fds.ch> | 2021-03-21 17:40:47 +0100 |
|---|---|---|
| committer | Dennis Camera <dennis.camera@ssrq-sds-fds.ch> | 2021-03-21 17:41:35 +0100 |
| commit | 1b04a0b7ea5b8dbaf1c3fb74b9503cd5b501dccf (patch) | |
| tree | 62fe9fe7b645174b187400b80ca1f4bd58158592 /type | |
| parent | 3bc490045431036b07af5e1fd037cc873d56b286 (diff) | |
| download | __dtnrch_egov-1b04a0b7ea5b8dbaf1c3fb74b9503cd5b501dccf.tar.gz __dtnrch_egov-1b04a0b7ea5b8dbaf1c3fb74b9503cd5b501dccf.zip | |
[type/__dtnrch_etax_sgnp] Improve java -version parser
Diffstat (limited to 'type')
| -rwxr-xr-x | type/__dtnrch_etax_sgnp/explorer/jvms | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/type/__dtnrch_etax_sgnp/explorer/jvms b/type/__dtnrch_etax_sgnp/explorer/jvms index c58025b..15f7e42 100755 --- a/type/__dtnrch_etax_sgnp/explorer/jvms +++ b/type/__dtnrch_etax_sgnp/explorer/jvms @@ -23,17 +23,41 @@ jvm_ver() ( jvm_dir=${1:?} test -x "${jvm_dir}/bin/java" || return 1 - #check_date_output?? - version_output=$("${jvm_dir}/bin/java" -version 2>&1) # ignore gcj - test $(expr "${version_output}" : '.*gcj') = 0 || return 1 + test "$(expr "${version_output}" : '.*gcj')" = 0 || return 1 java_version=$(expr "${version_output}" : '.*"\(.*\)".*') read -r ver_major ver_minor ver_micro ver_patch ver_b <<-EOF - $(printf '%s\n' "${java_version}" | sed 's/^\([0-9]\{1,\}\)\.\([0-9]\{1,\}\)\.\([0-9]\{1,\}\)\([\._]\([0-9]\{1,\}\)\(-b\([0-9]\{1,\}\)\{,1\}\)\{,1\}\)\{,1\}.*/\1 \2 \3 \5 \7/') + $( + printf '%s\n' "${java_version}" | awk ' + { + split($0, chars, "") + p = 1 + for (i = 1; i in chars; i++) { + c = chars[i] + if (c ~ /[0-9]/) { + v[p] = v[p] c + } else if (p < 4 && c == ".") { + p++ + } else if (c == "_") { + p = 4; v[p] = "" + } else if (chars[i] chars[i+1] == "-b") { + p = 5; v[p] = ""; i++ + } else if (c == "+") { + p = 5; v[p] = "" + } else if (p == 5 && c == "-") { + p = 6; v[p] = "" + } else + break + } + + for (i = 1; i <= 6; i++) + printf "%s%s", (i > 1 ? " " : ""), v[i]+0 + printf "\n" + }') EOF if test $((ver_major)) -eq 1 |
