summaryrefslogtreecommitdiff
path: root/type
diff options
context:
space:
mode:
authorDennis Camera <dennis.camera@ssrq-sds-fds.ch>2021-03-21 17:40:47 +0100
committerDennis Camera <dennis.camera@ssrq-sds-fds.ch>2021-03-21 17:41:35 +0100
commit1b04a0b7ea5b8dbaf1c3fb74b9503cd5b501dccf (patch)
tree62fe9fe7b645174b187400b80ca1f4bd58158592 /type
parent3bc490045431036b07af5e1fd037cc873d56b286 (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-xtype/__dtnrch_etax_sgnp/explorer/jvms32
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