gerrit-sshd: Allow double quoted strings
This provides a facility to nest a single quoted string within another string.
Change-Id: Ia7951485836e0e0445dbb0365da3208ae859d739
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java
index ade3aac..b6bb360 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java
@@ -168,21 +168,31 @@
static String[] split(String commandLine) {
final List<String> list = new ArrayList<String>();
boolean inquote = false;
+ boolean inDblQuote = false;
StringBuilder r = new StringBuilder();
for (int ip = 0; ip < commandLine.length();) {
final char b = commandLine.charAt(ip++);
switch (b) {
case '\t':
case ' ':
- if (inquote)
+ if (inquote || inDblQuote)
r.append(b);
else if (r.length() > 0) {
list.add(r.toString());
r = new StringBuilder();
}
continue;
+ case '\"':
+ if (inquote)
+ r.append(b);
+ else
+ inDblQuote = !inDblQuote;
+ continue;
case '\'':
- inquote = !inquote;
+ if (inDblQuote)
+ r.append(b);
+ else
+ inquote = !inquote;
continue;
case '\\':
if (inquote || ip == commandLine.length())