Add parser support for double dashes and list arguments

This commit is contained in:
SerpentSpirale 2022-01-02 12:31:07 +01:00
parent b0851c1592
commit d54bfa6569

View File

@ -399,20 +399,32 @@ public class JREUtils {
ArrayList<String> 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);
}
}