Browse Source

Fixed irregular quoting

JaniruTEC 4 years ago
parent
commit
d9c5d76417

+ 13 - 6
main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java

@@ -60,27 +60,34 @@ public class FuseVolume extends AbstractVolume {
 		List<String> strings = new ArrayList<>();
 		List<MatchResult> results = pattern.matcher(str).results().collect(Collectors.toList());
 		for (int i = 0; i < results.size(); i++) {
-			MatchResult current = results.get(i);
+			String current = group(results.get(i), false);
 			MatchResult next = i + 1 < results.size() ? results.get(i + 1) : null;
-			if (getSpecialString(next) != null && current.group().endsWith("=")) {
+
+			if (group(next, true) != null && current.endsWith("=")) {
 				//"next" is a quoted elements and "current" is missing it's argument
 				//--> "next" must be joined with "current" and is skipped in the regular iteration
-				strings.add(current.group() + getSpecialString(next));
+				strings.add(current + group(next, true));
 				i++;
 			} else {
 				//"next" is a normal unquoted string/is not missing from "current"
 				//--> Add "current" and advance
-				strings.add(current.group());
+				strings.add(current);
 			}
 		}
 		return strings.toArray(new String[0]);
 	}
 
-	private String getSpecialString(MatchResult result) {
+	private String group(MatchResult result, boolean onlyMatchQuoted) {
 		if (result == null) {
 			return null;
 		}
-		return result.group(1) != null ? result.group(1) : result.group(2);
+		if (result.group(1) != null) {
+			return result.group(1);
+		}
+		if (result.group(2) != null || onlyMatchQuoted) {
+			return result.group(2);
+		}
+		return result.group();
 	}
 
 	@Override