aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java')
-rw-r--r--src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java b/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
index 30b67ed55e..791265ae1b 100644
--- a/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
+++ b/src/main/java/com/google/devtools/common/options/ParamsFilePreProcessor.java
@@ -68,7 +68,7 @@ public class ParamsFilePreProcessor implements ArgsPreProcessor {
while (iterator.hasNext()) {
char next = iterator.next();
if (Character.isWhitespace(next) && !iterator.isInQuote() && !iterator.isEscaped()) {
- newArgs.add(arg.toString());
+ newArgs.add(unescape(arg.toString()));
arg = new StringBuilder();
} else {
arg.append(next);
@@ -92,6 +92,14 @@ public class ParamsFilePreProcessor implements ArgsPreProcessor {
return args;
}
+ private String unescape(String arg) {
+ if (arg.startsWith("'") && arg.endsWith("'")) {
+ String unescaped = arg.replace("'\\''", "'");
+ return unescaped.substring(1, unescaped.length() - 1);
+ }
+ return arg;
+ }
+
// Doesn't implement iterator to avoid autoboxing and to throw exceptions.
static class CharIterator {
@@ -145,7 +153,7 @@ public class ParamsFilePreProcessor implements ArgsPreProcessor {
throw new NoSuchElementException();
}
char current = (char) reader.read();
-
+
// check for \r\n line endings. If found, drop the \r for normalized parsing.
if (current == '\r' && peek() == '\n') {
current = (char) reader.read();