mbenson 2004/04/23 08:14:57
Modified: src/main/org/apache/tools/ant/taskdefs Tag: ANT_16_BRANCH
Execute.java
. Tag: ANT_16_BRANCH WHATSNEW
Log:
Merge fix for hanging, I/O-intensive, spawned processes.
Revision Changes Path
No revision
No revision
1.68.2.8 +23 -16 ant/src/main/org/apache/tools/ant/taskdefs/Execute.java
Index: Execute.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Execute.java,v
retrieving revision 1.68.2.7
retrieving revision 1.68.2.8
diff -u -r1.68.2.7 -r1.68.2.8
--- Execute.java 9 Mar 2004 17:01:33 -0000 1.68.2.7
+++ Execute.java 23 Apr 2004 15:14:56 -0000 1.68.2.8
@@ -17,6 +17,7 @@
package org.apache.tools.ant.taskdefs;
+import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -208,18 +209,15 @@
private static String[] getProcEnvCommand() {
if (Os.isFamily("os/2")) {
// OS/2 - use same mechanism as Windows 2000
- String[] cmd = {"cmd", "/c", "set" };
- return cmd;
+ return new String[] {"cmd", "/c", "set" };
} else if (Os.isFamily("windows")) {
// Determine if we're running under XP/2000/NT or 98/95
- if (!Os.isFamily("win9x")) {
- // Windows XP/2000/NT
- String[] cmd = {"cmd", "/c", "set" };
- return cmd;
- } else {
+ if (Os.isFamily("win9x")) {
// Windows 98/95
- String[] cmd = {"command.com", "/c", "set" };
- return cmd;
+ return new String[] {"command.com", "/c", "set" };
+ } else {
+ // Windows XP/2000/NT/2003
+ return new String[] {"cmd", "/c", "set" };
}
} else if (Os.isFamily("z/os") || Os.isFamily("unix")) {
// On most systems one could use: /bin/sh -c env
@@ -237,16 +235,13 @@
return cmd;
} else if (Os.isFamily("netware") || Os.isFamily("os/400")) {
// rely on PATH
- String[] cmd = {"env"};
- return cmd;
+ return new String[] {"env"};
} else if (Os.isFamily("openvms")) {
- String[] cmd = {"show", "logical"};
- return cmd;
+ return new String[] {"show", "logical"};
} else {
// MAC OS 9 and previous
//TODO: I have no idea how to get it, someone must fix it
- String[] cmd = null;
- return cmd;
+ return null;
}
}
@@ -515,6 +510,18 @@
Project.MSG_VERBOSE);
}
}
+
+ OutputStream dummyOut = new OutputStream() {
+ public void write(int b) throws IOException {
+ }
+ };
+
+ ExecuteStreamHandler streamHandler = new PumpStreamHandler(dummyOut);
+ streamHandler.setProcessErrorStream(process.getErrorStream());
+ streamHandler.setProcessOutputStream(process.getInputStream());
+ streamHandler.start();
+ process.getOutputStream().close();
+
project.log("spawned process " + process.toString(),
Project.MSG_VERBOSE);
}
No revision
No revision
1.503.2.82 +3 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.503.2.81
retrieving revision 1.503.2.82
diff -u -r1.503.2.81 -r1.503.2.82
--- WHATSNEW 23 Apr 2004 14:33:33 -0000 1.503.2.81
+++ WHATSNEW 23 Apr 2004 15:14:56 -0000 1.503.2.82
@@ -71,6 +71,9 @@
* UNC pathnames did not work for ANT_HOME or -lib locations on Windows.
Bugzilla report 27922.
+* I/O-intensive processes hung when executed via <exec spawn="true">.
+ Bugzilla reports 23893/26852.
+
Other changes:
--------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]