make commands work in directories with spaces when using a response file as well, Issue 41387
git-svn-id: https://svn.apache.org/repos/asf/ant/antlibs/dotnet/trunk@498915 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/changes.xml b/changes.xml
index 239e12f..83ff2f5 100644
--- a/changes.xml
+++ b/changes.xml
@@ -22,6 +22,11 @@
</properties>
<release version="SVN trunk" date="unpublished">
+ <action type="fix" issue="41387">
+ The compilation tasks failed if the source files resided in a
+ directory with spaces in its full path and a response file was
+ used.
+ </action>
</release>
<release version="1.0" date="2006-11-06">
diff --git a/src/main/org/apache/ant/dotnet/NetCommand.java b/src/main/org/apache/ant/dotnet/NetCommand.java
index 0e4b6d5..ac7f34e 100644
--- a/src/main/org/apache/ant/dotnet/NetCommand.java
+++ b/src/main/org/apache/ant/dotnet/NetCommand.java
@@ -42,6 +42,7 @@
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
+import org.apache.tools.ant.taskdefs.condition.Os;
import org.apache.tools.ant.types.Commandline;
/**
@@ -58,6 +59,12 @@
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
+ private static final boolean IS_WINDOWS;
+
+ static {
+ IS_WINDOWS = Os.isFamily("windows");
+ }
+
/**
* owner project
*/
@@ -351,7 +358,14 @@
PrintWriter out = new PrintWriter(new BufferedOutputStream(fos));
//start at 1 because element 0 is the executable name
for (int i = 1; i < commands.length; ++i) {
- out.println(commands[i]);
+ if (IS_WINDOWS && commands[i].indexOf(" ") > -1) {
+ String q = commands[i].indexOf("\"") > -1 ? "'" : "\"";
+ out.print(q);
+ out.print(commands[i]);
+ out.println(q);
+ } else {
+ out.println(commands[i]);
+ }
}
out.flush();
out.close();