Re: [PATCH] mingw: make stderr unbuffered again
flat view
From: Johannes Sixt <hidden>
Date: 2017-02-15 20:45:30
Am 15.02.2017 um 13:32 schrieb Johannes Schindelin:
On Tue, 14 Feb 2017, Johannes Sixt wrote:quoted
Am 14.02.2017 um 15:47 schrieb Johannes Schindelin:quoted
On Mon, 13 Feb 2017, Junio C Hamano wrote:quoted
Johannes Schindelin [off-list ref] writes:quoted
What we forgot was to mark stderr as unbuffered again.I do not see how the earlier patch turned stderr from unbuffered to buffered, as it did not add or remove any setvbuf() call. Can you explain?[ motivation and history of js/mingw-isatty snipped ] So instead of "bending" the target HANDLE of the existing stdout/stderr (which would *naturally* have kept the buffered/unbuffered nature as-is), we now redirect with correct API calls.
Your statement implies that at the time when winansi_init() begins, stdio is already initialized and the buffered/unbuffered state has been set for stderr. I would think that this is true. Then we swap out the file handle underlying stderr in swap_osfhnd() using dup2(). Why would that change the buffered state of stdio?
And the patch I provided at the bottom of this mail thread reinstates the unbuffered nature of stderr now that it gets reopened. Hopefully that makes it clear why the setvbuf() call is required now, but was previously unnecessary?
Unfortunately, no. I do not see how dup2() causes a change in stdio state. I must be missing something (and that may be a basic misunderstanding of how stdio is initialized). -- Hannes