Re: output buffering leads to reordered lines when stdout isn't a tty

"Alexander V. Lukyanov" <[email protected]> Thu, 7 May 2009 11:51:44 +0400
Newsgroups gmane.network.lftp.devel
Message-ID <[email protected]>
On Tue, May 05, 2009 at 11:33:21PM -0300, Peter Cordes wrote:
>  I think I've found a problem with lftp's output buffering when stdout
> isn't a tty (so stdout is block-buffered by default).  I see this with
> lftp 3.7.13 compiled on AMD64 Ubuntu Jaunty, but I mostly was testing
> with lftp 3.7.3 on Debian lenny, 32bit x86.

I think it can be fixed by flushing stdout before launching external
programs.

Please test this patch.

--
   Alexander.
diff (text/plain, 417 B)
Index: Filter.cc
===================================================================
RCS file: /home/lav/cvsroot/lftp/src/Filter.cc,v
retrieving revision 1.45
diff -u -p -r1.45 Filter.cc
--- Filter.cc	27 Nov 2008 05:56:15 -0000	1.45
+++ Filter.cc	7 May 2009 07:50:51 -0000
@@ -146,6 +146,7 @@ int OutputFilter::getfd()
 
    bool had_pg=(pg!=0);
 
+   fflush(stdout);
    fflush(stderr);
    switch(pid=fork())
    {