From de06c1b597ffcab2fd85890c0d110873a7e3b738 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Mon, 18 Nov 2002 15:22:52 +0000 Subject: [PATCH] Don't add newlines in that haven't been in the files originally - no matter what encoding. PR: 12511 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273553 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 ++ src/etc/testcases/taskdefs/concat-input/A | 1 + src/etc/testcases/taskdefs/concat-input/B | 1 + src/etc/testcases/taskdefs/concat.xml | 12 ++++++ .../org/apache/tools/ant/taskdefs/Concat.java | 38 ++++++++++--------- .../apache/tools/ant/taskdefs/ConcatTest.java | 7 ++++ 6 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 src/etc/testcases/taskdefs/concat-input/A create mode 100644 src/etc/testcases/taskdefs/concat-input/B diff --git a/WHATSNEW b/WHATSNEW index c1026d229..842d2d06c 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -55,6 +55,10 @@ Fixed bugs: * could miss today's changes. +* entity includes would cause exceptions if path names included spaces. + +* could append newline characters between concatenated files. + Other changes: -------------- * lets you set the username and password for proxies that want authentication diff --git a/src/etc/testcases/taskdefs/concat-input/A b/src/etc/testcases/taskdefs/concat-input/A new file mode 100644 index 000000000..2e65efe2a --- /dev/null +++ b/src/etc/testcases/taskdefs/concat-input/A @@ -0,0 +1 @@ +a \ No newline at end of file diff --git a/src/etc/testcases/taskdefs/concat-input/B b/src/etc/testcases/taskdefs/concat-input/B new file mode 100644 index 000000000..63d8dbd40 --- /dev/null +++ b/src/etc/testcases/taskdefs/concat-input/B @@ -0,0 +1 @@ +b \ No newline at end of file diff --git a/src/etc/testcases/taskdefs/concat.xml b/src/etc/testcases/taskdefs/concat.xml index 811ccd84d..63876e2c6 100644 --- a/src/etc/testcases/taskdefs/concat.xml +++ b/src/etc/testcases/taskdefs/concat.xml @@ -40,4 +40,16 @@ if="TESTDEST.was.created"/> + + + + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Concat.java b/src/main/org/apache/tools/ant/taskdefs/Concat.java index ced15d928..dbf7795b6 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Concat.java +++ b/src/main/org/apache/tools/ant/taskdefs/Concat.java @@ -63,8 +63,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; -import java.io.PrintWriter; import java.io.StringReader; +import java.io.Writer; import java.util.Enumeration; import java.util.Vector; import org.apache.tools.ant.BuildException; @@ -360,7 +360,7 @@ public class Concat extends Task { } is = new FileInputStream(input[i]); - byte[] buffer = new byte[8096]; + byte[] buffer = new byte[8192]; while (true) { int bytesRead = is.read(buffer); if (bytesRead == -1) { // EOF @@ -390,24 +390,22 @@ public class Concat extends Task { } } - } else { // user specified encoding, assume line oriented input + } else { // user specified encoding - PrintWriter out = null; + Writer out = null; BufferedReader in = null; try { if (destinationFile == null) { // Log using WARN so it displays in 'quiet' mode. - out = new PrintWriter( - new OutputStreamWriter( - new LogOutputStream(this, Project.MSG_WARN))); + out = new OutputStreamWriter( + new LogOutputStream(this, Project.MSG_WARN)); } else { - out = new PrintWriter( - new OutputStreamWriter( - new FileOutputStream(destinationFile - .getAbsolutePath(), - append), - encoding)); + out = new OutputStreamWriter( + new FileOutputStream(destinationFile + .getAbsolutePath(), + append), + encoding); // This flag should only be recognized for the first // file. In the context of a single 'cat', we always @@ -421,11 +419,17 @@ public class Concat extends Task { encoding)); String line; - while ((line = in.readLine()) != null) { - // Log the line, using WARN so it displays in - // 'quiet' mode. - out.println(line); + char[] buffer = new char[4096]; + while (true) { + int charsRead = in.read(buffer); + if (charsRead == -1) { // EOF + break; + } + + // Write the read data. + out.write(buffer, 0, charsRead); } + out.flush(); in.close(); in = null; } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ConcatTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ConcatTest.java index 3f107036e..0caa7f7db 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/ConcatTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/ConcatTest.java @@ -166,4 +166,11 @@ public class ConcatTest "src/etc/testcases/taskdefs/thisfiledoesnotexist does not exist."); } + public void testConcatNoNewline() { + expectLog("testConcatNoNewline", "ab"); + } + + public void testConcatNoNewlineEncoding() { + expectLog("testConcatNoNewlineEncoding", "ab"); + } }