diff options
-rw-r--r-- | org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java index 5c792e8c5..d16d33d28 100644 --- a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java +++ b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java @@ -190,13 +190,30 @@ public class ProgramLaunchDelegate implements ILaunchConfigurationDelegate { } private String generateCommandLine(String[] commandLine) { - if (commandLine.length < 1) { + if (commandLine.length < 1) return ""; //$NON-NLS-1$ - } - StringBuffer buf= new StringBuffer(commandLine[0]); - for (int i= 1; i < commandLine.length; i++) { + StringBuffer buf= new StringBuffer(); + for (int i= 0; i < commandLine.length; i++) { buf.append(' '); - buf.append(commandLine[i]); + char[] characters= commandLine[i].toCharArray(); + StringBuffer command= new StringBuffer(); + boolean containsSpace= false; + for (int j = 0; j < characters.length; j++) { + char character= characters[j]; + if (character == '\"') { + command.append('\\'); + } else if (character == ' ') { + containsSpace = true; + } + command.append(character); + } + if (containsSpace) { + buf.append('\"'); + buf.append(command); + buf.append('\"'); + } else { + buf.append(command); + } } return buf.toString(); } |