diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java index 4d99bf494..82095d9be 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java @@ -60,27 +60,34 @@ public class FuseVolume extends AbstractVolume { List strings = new ArrayList<>(); List 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