bodewig 2003/06/25 03:31:45 Modified: src/main/org/apache/tools/ant/taskdefs FixCRLF.java src/main/org/apache/tools/ant/util FileUtils.java Log: Make fixcrlf work even with /tmp on a separate filesystem Revision Changes Path 1.48 +8 -34 ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java Index: FixCRLF.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- FixCRLF.java 24 Jun 2003 08:44:02 -0000 1.47 +++ FixCRLF.java 25 Jun 2003 10:31:45 -0000 1.48 @@ -552,50 +552,24 @@ File destFile = new File(destD, file); + boolean destIsWrong = true; if (destFile.exists()) { // Compare the destination with the temp file log("destFile exists", Project.MSG_DEBUG); if (!fileUtils.contentEquals(destFile, tmpFile)) { log(destFile + " is being written", Project.MSG_DEBUG); - if (!destFile.delete()) { - throw new BuildException("Unable to delete " - + destFile); - } - if (!tmpFile.renameTo(destFile)) { - throw new BuildException( - "Failed to transform " + srcFile - + " to " + destFile - + ". Couldn't rename temporary file: " - + tmpFile); - } - - } else { // destination is equal to temp file + } else { log(destFile + " is not written, as the contents are identical", Project.MSG_DEBUG); - if (!tmpFile.delete()) { - throw new BuildException("Unable to delete " - + tmpFile); - } - } - } else { // destFile does not exist - write the temp file - log("destFile does not exist", Project.MSG_DEBUG); - - File parent = fileUtils.getParentFile(destFile); - if (!parent.exists()) { - parent.mkdirs(); - } - - if (!tmpFile.renameTo(destFile)) { - throw new BuildException( - "Failed to transform " + srcFile - + " to " + destFile - + ". Couldn't rename temporary file: " - + tmpFile); + destIsWrong = false; } } - tmpFile = null; + if (destIsWrong) { + fileUtils.rename(tmpFile, destFile); + tmpFile = null; + } } catch (IOException e) { throw new BuildException(e); 1.44 +39 -1 ant/src/main/org/apache/tools/ant/util/FileUtils.java Index: FileUtils.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/FileUtils.java,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- FileUtils.java 24 Jun 2003 16:07:24 -0000 1.43 +++ FileUtils.java 25 Jun 2003 10:31:45 -0000 1.44 @@ -1122,5 +1122,43 @@ .equals(normalize(f2.getAbsolutePath())); } + /** + * Renames a file, even if that involves crossing file system boundaries. + * + * <p>This will remove <code>to</code> (if it exists), ensure that + * <code>to</code>'s parent directory exists and move + * <code>from</code>, which involves deleting <code>from</code> as + * well.</p> + * + * @throws IOException if anything bad happens during this + * process. Note that <code>to</code> may have been deleted + * already when this happens. + * + * @param from the file to move + * @param to the new file name + * + * @since Ant 1.6 + */ + public void rename(File from, File to) throws IOException { + if (to.exists() && !to.delete()) { + throw new IOException("Failed to delete " + to + + " while trying to rename " + from); + } + + File parent = getParentFile(to); + if (!parent.exists() && !parent.mkdirs()) { + throw new IOException("Failed to create directory " + parent + + " while trying to rename " + from); + } + + if (!from.renameTo(to)) { + copyFile(from, to); + if (!from.delete()) { + throw new IOException("Failed to delete " + from + + " while trying to rename it."); + } + } + } + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]