You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2003/07/16 07:14:31 UTC

DO NOT REPLY [Bug 21636] New: - Java task wraps output by default

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21636>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21636

Java task wraps output by default

           Summary: Java task wraps output by default
           Product: Ant
           Version: 1.6Alpha (nightly)
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Core tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: jerenkrantz@apache.org


The Java task when used with an 'output' attribute will wrap the output.  This
can lead to corruption/invalid output from otherwise well-behaving Java programs
that emit all data on long lines without a newline.  The output will have
newlines added throughout in incorrect locations.

A task snippet:

<java classname="LongLine" output="longline.txt" />

where LongLine's main class will emit something greater than 4k without a new
line to System.out.  The output file longline.txt will now contain newlines in
places not originally requested.

The output from the above task would be different from:

java LongLine > longline.txt

It seems that the Redirector class will always print newlines.  A partial fix is
as follows:

--- src/main/org/apache/tools/ant/taskdefs/Redirector.java	Tue Jul 15 21:59:37 2003
+++ src/main/org/apache/tools/ant/taskdefs/Redirector.java.new	Tue Jul 15
21:58:28 2003
@@ -365,7 +365,7 @@
         if (outPrintStream == null) {
             outPrintStream = new PrintStream(outputStream);
         }
-        outPrintStream.println(line);
+        outPrintStream.print(line);
     }
 
     /**

This is definitely not an ideal solution because now no newlines will be emitted
to the file.  This isn't right either, but solves my immediate problem.

This problem also exists in Ant 1.5.3 which has the output code back in Java
taskdef file.

I'll leave it to people who know Ant better than I for a more complete solution.
 If you need a more precise reproduction case, please let me know, but it's
fairly straightforward to reproduce (IMHO).

Thanks!

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org