This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Unbuffer stdout and stderr on windows
- From: Christopher Faylor <cgf-use-the-mailinglist-please at sourceware dot org>
- To: palves at redhat dot com, gdb-patches at sourceware dot org, brobecker at adacore dot com, yao at codesourcery dot com, Eli Zaretskii <eliz at gnu dot org>
- Date: Thu, 15 Aug 2013 13:59:40 -0400
- Subject: Re: [PATCH] Unbuffer stdout and stderr on windows
- References: <51EE23F8 dot 1070905 at codesourcery dot com> <83wqohw4ee dot fsf at gnu dot org> <20130729192559 dot GA5348 at ednor dot casa dot cgf dot cx> <83d2q1xiyv dot fsf at gnu dot org> <51F6C7B2 dot 3020400 at redhat dot com> <20130731034045 dot GA5565 at ednor dot casa dot cgf dot cx> <20130812211105 dot GA11128 at adacore dot com> <8361v9piop dot fsf at gnu dot org> <20130815173618 dot GA6955 at ednor dot casa dot cgf dot cx> <83eh9uonlg dot fsf at gnu dot org>
On Thu, Aug 15, 2013 at 08:44:43PM +0300, Eli Zaretskii wrote:
>On Thu, 15 Aug 2013 13:36:18 -0400, Christopher Faylor wrote:
>>I thought that "unbuffered" normally means something like "every output
>>operation gets immediately sent as a block" rather than "flush after
>>every character".
>
>AFAIK, unbuffered always meant the latter.
>
>>If the mingw "unbuffered" mode means that everything is o n e c h a r a
>>c t e r a t a t i m e
>
>It does mean that. Doesn't it work like that in Cygwin?
Cygwin uses newlib which, AFAICT, writes a block at a time without
storing the block in a buffer first.
So:
fwrite (foo, 27, 1, stdout);
writes 27 bytes to stdout in one shot, without buffering.
I only got this from looking at the code so I could be wrong.
>>The other alternative would be to use line buffering for gdb. I don't
>>see why cygwin pipes (whether they are "ptys" or actual pipes) are a
>>special case here. stdout is usually line buffered isn't it? Why not
>>just force that behavior for gdb?
>
>That's what I suggested, but Yao says that using line buffering still
>fails some tests.
Sorry, I missed that you'd already suggested that.
cgf