You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2001/04/03 13:26:26 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs FixCRLF.java
bodewig 01/04/03 04:26:26
Modified: . build.xml
src/main/org/apache/tools/ant/taskdefs FixCRLF.java
Log:
<fixcrlf> will only overwrite files if their content is different from
the original.
Submitted by: Attila Szegedi <sz...@scriptum.hu>
Revision Changes Path
1.146 +6 -1 jakarta-ant/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-ant/build.xml,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -r1.145 -r1.146
--- build.xml 2001/03/19 12:56:17 1.145
+++ build.xml 2001/04/03 11:26:26 1.146
@@ -630,13 +630,18 @@
<exclude name="org/apache/tools/ant/taskdefs/GUnzipTest.java" />
<exclude name="org/apache/tools/ant/taskdefs/GzipTest.java" />
- <!-- only run this test if ANTLR is installed -->
+ <!-- only run these tests if their required libraries are installed -->
<exclude name="org/apache/tools/ant/taskdefs/optional/ANTLRTest.java"
unless="antlr.present" />
<exclude name="org/apache/tools/ant/util/regexp/JakartaRegexpMatcherTest.java"
unless="jakarta.regexp.present" />
<exclude name="org/apache/tools/ant/util/regexp/JakartaOroMatcherTest.java"
unless="jakarta.oro.present" />
+ <exclude name="${optional.package}/ide/VAJExportTest.java" unless="vaj.present" />
+
+ <!-- run when you have the environment setup to support them -->
+ <exclude name="org/apache/tools/ant/taskdefs/optional/net/FtpTest.java" />
+
</fileset>
</batchtest>
1.14 +50 -7 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
Index: FixCRLF.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- FixCRLF.java 2001/01/03 14:18:30 1.13
+++ FixCRLF.java 2001/04/03 11:26:26 1.14
@@ -238,9 +238,9 @@
// log options used
log("options:" +
- " cr=" + (addcr==-1 ? "add" : addcr==0 ? "asis" : "remove") +
- " tab=" + (addtab==-1 ? "add" : addtab==0 ? "asis" : "remove") +
- " eof=" + (ctrlz==-1 ? "add" : ctrlz==0 ? "asis" : "remove") +
+ " cr=" + (addcr==1 ? "add" : addcr==0 ? "asis" : "remove") +
+ " tab=" + (addtab==1 ? "add" : addtab==0 ? "asis" : "remove") +
+ " eof=" + (ctrlz==1 ? "add" : ctrlz==0 ? "asis" : "remove") +
" tablength=" + tablength,
Project.MSG_VERBOSE);
@@ -363,11 +363,54 @@
// output the data
try {
+ // Determine whether it should be written,
+ // that is if it is different than the potentially already existing file
+ boolean write = false;
+ byte[] existingdata = indata;
File destFile = srcFile;
- if (destDir != null) destFile = new File(destDir, files[i]);
- FileOutputStream outStream = new FileOutputStream(destFile);
- outStream.write(outdata,0,o);
- outStream.close();
+ if (destDir != null) {
+ destFile = new File(destDir, files[i]);
+ if(destFile.isFile()) {
+ int len = (int)destFile.length();
+ if(len != o) {
+ write = true;
+ } else {
+ existingdata = new byte[len];
+ try {
+ FileInputStream in = new FileInputStream(destFile);
+ in.read(existingdata);
+ in.close();
+ } catch (IOException e) {
+ throw new BuildException(e);
+ }
+ }
+ } else {
+ write = true;
+ }
+ }
+
+ if(!write) {
+ if(existingdata.length != o) {
+ write = true;
+ } else {
+ for(int j = 0; j < o; ++j) {
+ if(existingdata[j] != outdata[j]) {
+ write = true;
+ break;
+ }
+ }
+ }
+ }
+
+ if(write) {
+ log(destFile + " is being written", Project.MSG_VERBOSE);
+ FileOutputStream outStream = new FileOutputStream(destFile);
+ outStream.write(outdata,0,o);
+ outStream.close();
+ } else {
+ log(destFile + " is not written, as the contents are identical",
+ Project.MSG_VERBOSE);
+ }
} catch (IOException e) {
throw new BuildException(e);
}