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]

Reply via email to