From d54bfa6569e83a241cd8801e045b3a9ac008da2a Mon Sep 17 00:00:00 2001 From: SerpentSpirale Date: Sun, 2 Jan 2022 12:31:07 +0100 Subject: [PATCH] Add parser support for double dashes and list arguments --- .../java/net/kdt/pojavlaunch/utils/JREUtils.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 8bac52d0c..46a84023a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -399,20 +399,32 @@ public class JREUtils { ArrayList parsedArguments = new ArrayList<>(0); args = args.trim().replace(" ", ""); //For each prefixes, we separate args. - for(String prefix : new String[]{"-XX:-","-XX:+", "-XX:","-"}){ + for(String prefix : new String[]{"-XX:-","-XX:+", "-XX:","--","-"}){ while (true){ int start = args.indexOf(prefix); if(start == -1) break; //Get the end of the current argument int end = args.indexOf("-", start + prefix.length()); if(end == -1) end = args.length(); + //Extract it String parsedSubString = args.substring(start, end); args = args.replace(parsedSubString, ""); //Check if two args aren't bundled together by mistake - if(parsedSubString.indexOf('=') == parsedSubString.lastIndexOf('=')) + if(parsedSubString.indexOf('=') == parsedSubString.lastIndexOf('=')) { + int arraySize = parsedArguments.size(); + if(arraySize > 0){ + String lastString = parsedArguments.get(arraySize - 1); + // Looking for list elements + if(lastString.charAt(lastString.length() - 1) == ',' || + parsedSubString.contains(",")){ + parsedArguments.set(arraySize - 1, lastString + parsedSubString); + continue; + } + } parsedArguments.add(parsedSubString); + } else Log.w("JAVA ARGS PARSER", "Removed improper arguments: " + parsedSubString); } }