antoine 2003/10/13 12:48:42 Modified: src/main/org/apache/tools/ant/taskdefs/optional/net Tag: ANT_16_BRANCH FTP.java Log: Fix a bug with the action RMDIR of the FTP task The RMDIR action was bound to fail if there was more than one level of directories to delete. The problem has been reported by Sairam Manda on the user list on October 10th and 13th. Revision Changes Path No revision No revision 1.52.2.1 +28 -24 ant/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java Index: FTP.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java,v retrieving revision 1.52 retrieving revision 1.52.2.1 diff -u -r1.52 -r1.52.2.1 --- FTP.java 12 Sep 2003 20:32:29 -0000 1.52 +++ FTP.java 13 Oct 2003 19:48:42 -0000 1.52.2.1 @@ -1357,30 +1357,34 @@ } bw = new BufferedWriter(new FileWriter(listing)); } - - for (int i = 0; i < dsfiles.length; i++) { - switch (action) { - case SEND_FILES: - sendFile(ftp, dir, dsfiles[i]); - break; - case GET_FILES: - getFile(ftp, dir, dsfiles[i]); - break; - case DEL_FILES: - delFile(ftp, dsfiles[i]); - break; - case LIST_FILES: - listFile(ftp, bw, dsfiles[i]); - break; - case CHMOD: - doSiteCommand(ftp, "chmod " + chmod + " " + resolveFile(dsfiles[i])); - transferred++; - break; - case RM_DIR: - rmDir(ftp, dsfiles[i]); - break; - default: - throw new BuildException("unknown ftp action " + action); + if (action == RM_DIR) { + // to remove directories, start by the end of the list + // the trunk does not let itself be removed before the leaves + for (int i = dsfiles.length - 1; i >= 0; i--) { + rmDir(ftp, dsfiles[i]); + } + } else { + for (int i = 0; i < dsfiles.length; i++) { + switch (action) { + case SEND_FILES: + sendFile(ftp, dir, dsfiles[i]); + break; + case GET_FILES: + getFile(ftp, dir, dsfiles[i]); + break; + case DEL_FILES: + delFile(ftp, dsfiles[i]); + break; + case LIST_FILES: + listFile(ftp, bw, dsfiles[i]); + break; + case CHMOD: + doSiteCommand(ftp, "chmod " + chmod + " " + resolveFile(dsfiles[i])); + transferred++; + break; + default: + throw new BuildException("unknown ftp action " + action); + } } } } finally {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]