KORAPXMLTOOL_XMX_MB -> KORAPXMLTOOL_XMX

Change-Id: I4a5228d9c6025dc178267987828b358b682c9002
diff --git a/korapxmltool.shebang b/korapxmltool.shebang
index 6f8befc..a6d561d 100644
--- a/korapxmltool.shebang
+++ b/korapxmltool.shebang
@@ -6,7 +6,8 @@
 # (Run `zip -A korapxmltool` if your unzip/java complains about prepended bytes.)
 #
 # Override memory:
-#   export KORAPXMLTOOL_XMX_MB=8192          # sets -Xmx8192m
+#   export KORAPXMLTOOL_XMX=20g              # sets -Xmx20g
+#   export KORAPXMLTOOL_XMX=8192m            # sets -Xmx8192m
 #   export KORAPXMLTOOL_JAVA_OPTS="... -Xmx4g"  # full custom opts
 # Otherwise we pick ~75% of detected memory (cgroup aware), clamped to [1024m, 65536m].
 
@@ -54,9 +55,26 @@
 fi
 
 if ! $has_xmx; then
-  if [[ -n ${KORAPXMLTOOL_XMX_MB:-} && ${KORAPXMLTOOL_XMX_MB:-} =~ ^[0-9]+$ ]]; then
-    xmx_mb=${KORAPXMLTOOL_XMX_MB}
-  else
+  if [[ -n ${KORAPXMLTOOL_XMX:-} ]]; then
+    # Handle KORAPXMLTOOL_XMX with units (g/G for GB, m/M for MB, or just number for MB)
+    if [[ ${KORAPXMLTOOL_XMX} =~ ^[0-9]+[gG]$ ]]; then
+      # Convert GB to MB
+      xmx_gb=${KORAPXMLTOOL_XMX%[gG]}
+      xmx_mb=$((xmx_gb * 1024))
+    elif [[ ${KORAPXMLTOOL_XMX} =~ ^[0-9]+[mM]$ ]]; then
+      # Extract MB value
+      xmx_mb=${KORAPXMLTOOL_XMX%[mM]}
+    elif [[ ${KORAPXMLTOOL_XMX} =~ ^[0-9]+$ ]]; then
+      # Treat plain number as MB for backward compatibility
+      xmx_mb=${KORAPXMLTOOL_XMX}
+    else
+      echo "Warning: Invalid KORAPXMLTOOL_XMX format '${KORAPXMLTOOL_XMX}'. Use formats like '20g', '8192m', or '8192'." >&2
+      xmx_mb=""
+    fi
+  fi
+  
+  # If no valid XMX was provided or parsing failed, use auto-detection
+  if [[ -z ${xmx_mb:-} ]]; then
     mem_mb=$(detect_mem_limit_mb)
     xmx_mb=$(( mem_mb * 75 / 100 ))
     (( xmx_mb < 1024 )) && xmx_mb=1024