Steve,
Here is a patch for the FTP class that allows FTP to work against an
iSeries system. Please let me know if it is appropriate. I had a hard
time deciding whether this belongs in Ant or the underlying
org.apache.commons.net support.
My thought with changing the commons.net FTP class was that it would
fix the list files for anything relying on that package. To fix it
there I would
patch it to set the system as a property when a connection is
established
and then set the listfmt in the getfiles if the default
FTPFileLIstParser is
being used.
David Morris
Index: src/main/org/apache/tools/ant/taskdefs/optional/net/ftp.java
===================================================================
RCS file:
/home/cvspublic/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/net/ftp.java,v
retrieving revision 1.22
diff -u -r1.22 ftp.java
---
src/main/org/apache/tools/ant/taskdefs/optional/net/ftp.java 1
Jun 2002 12:26:41 -0000 1.22
+++
src/main/org/apache/tools/ant/taskdefs/optional/net/ftp.java 12
Jun 2002 15:31:52 -0000
@@ -53,9 +53,9 @@
*/
package org.apache.tools.ant.taskdefs.optional.net;
-import com.oroinc.net.ftp.FTPClient;
-import com.oroinc.net.ftp.FTPFile;
-import com.oroinc.net.ftp.FTPReply;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPFile;
+import org.apache.commons.net.ftp.FTPReply;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.FileScanner;
@@ -132,6 +132,7 @@
private String chmod = null;
private String umask = null;
private FileUtils fileUtils = FileUtils.newFileUtils();
+ private String system;
protected static final String[] ACTION_STRS = {
"sending",
@@ -612,7 +613,10 @@
log("creating remote directory " +
resolveFile(dir.getPath()),
Project.MSG_VERBOSE);
if(!ftp.makeDirectory(resolveFile(dir.getPath()))) {
+ boolean saveIgnoreNoncriticalErrors =
ignoreNoncriticalErrors;
+ ignoreNoncriticalErrors = true;
handleMkDirFailure(ftp);
+ ignoreNoncriticalErrors =
saveIgnoreNoncriticalErrors;
}
dirCache.addElement(dir);
}
@@ -924,9 +928,19 @@
}
log("login succeeded", Project.MSG_VERBOSE);
+
+ // Retrieve the system
+ ftp.syst();
+
+ if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
+ system = ftp.getReplyString();
+ if (system.substring(5,11).equals("OS/400")) {
+ doSiteCommand(ftp, "listfmt 1");
+ }
+ }
if (binary) {
-
ftp.setFileType(com.oroinc.net.ftp.FTP.IMAGE_FILE_TYPE);
+
ftp.setFileType(org.apache.commons.net.ftp.FTP.IMAGE_FILE_TYPE);
if
(!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
throw new BuildException("could not set transfer
type: " +
>>> [EMAIL PROTECTED] 06/10/02 10:04PM >>>
...if that is what it takes. Better yet, have it work it out for
itself
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>