peterreilly 2003/07/14 10:29:17 Modified: src/main/org/apache/tools/ant/taskdefs Delete.java Log: fix for possible race condition on windows Revision Changes Path 1.42 +22 -6 ant/src/main/org/apache/tools/ant/taskdefs/Delete.java Index: Delete.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Delete.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- Delete.java 6 Jul 2003 09:57:36 -0000 1.41 +++ Delete.java 14 Jul 2003 17:29:17 -0000 1.42 @@ -459,7 +459,7 @@ } else { log("Deleting: " + file.getAbsolutePath()); - if (!file.delete()) { + if (!delete(file)) { String message = "Unable to delete file " + file.getAbsolutePath(); if (failonerror) { @@ -534,7 +534,23 @@ //************************************************************************ // protected and private methods //************************************************************************ - + /** + * Attempt to fix possible race condition when deleting + * files on WinXP. If the delete does not work, + * wait a little and try again. + */ + private boolean delete(File f) { + if (! f.delete()) { + try { + Thread.sleep(10); + return f.delete(); + } catch (InterruptedException ex) { + return f.delete(); + } + } + return true; + } + protected void removeDir(File d) { String[] list = d.list(); if (list == null) { @@ -547,7 +563,7 @@ removeDir(f); } else { log("Deleting " + f.getAbsolutePath(), verbosity); - if (!f.delete()) { + if (!delete(f)) { String message = "Unable to delete file " + f.getAbsolutePath(); if (failonerror) { @@ -560,7 +576,7 @@ } } log("Deleting directory " + d.getAbsolutePath(), verbosity); - if (!d.delete()) { + if (!delete(d)) { String message = "Unable to delete directory " + dir.getAbsolutePath(); if (failonerror) { @@ -586,7 +602,7 @@ for (int j = 0; j < files.length; j++) { File f = new File(d, files[j]); log("Deleting " + f.getAbsolutePath(), verbosity); - if (!f.delete()) { + if (!delete(f)) { String message = "Unable to delete file " + f.getAbsolutePath(); if (failonerror) { @@ -606,7 +622,7 @@ String[] dirFiles = dir.list(); if (dirFiles == null || dirFiles.length == 0) { log("Deleting " + dir.getAbsolutePath(), verbosity); - if (!dir.delete()) { + if (!delete(dir)) { String message = "Unable to delete directory " + dir.getAbsolutePath(); if (failonerror) {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]