From: Junio C Hamano Date: Mon, 19 Nov 2007 22:09:38 GMT Subject: Re: [RFH] Flush progress message buffer in display(). Message-ID: <7vk5odnazh.fsf@gitster.siamese.dyndns.org> In-Reply-To: Nicolas Pitre writes: > On Mon, 19 Nov 2007, Junio C Hamano wrote: > >> The standard error stream is not "fully buffered": >> >> http://www.opengroup.org/onlinepubs/000095399/functions/xsh_chap02_05.html#tag_02_05 >> >> Not "fully buffered" means either "unbuffered" or "line >> buffered". Because the progress display does not terminate its >> line, it means that the additional fflush(stderr) you added are >> needed if the stream is line buffered (still conforming). > > Maybe stdio on Linux considers \r as a line termination. Or totally unbufferred. Running strace on this: #include int main(int ac, char **av) { fprintf(stderr, "foo"); fprintf(stderr, "bar"); return 0; } will tell you. I bet you will see two write(2) of 3 bytes each. > Flushing stderr should not hurt anyway. True, especially if the rate is limited, which it is.