On 27/08/17 12:33, Adam Dinwoodie wrote: > On Sun, Aug 27, 2017 at 03:06:31AM +0100, Ramsay Jones wrote: >> On 26/08/17 22:11, Adam Dinwoodie wrote: >>> On Sat, Aug 26, 2017 at 11:53:37AM -0700, Jeff King wrote: >>>> Interesting. I find it a little hard to believe there's so obvious a bug >>>> as "fflush(NULL) flushes stdin", but well...that's what it seems like. >>>> >>>> If that's truly what it is, this is the minimal reproduction I came up >>>> with: >>>> >>>> -- >8 -- >>>> #include <stdio.h> >>>> >>>> int main(void) >>>> { >>>> char buf[256]; >>>> while (fgets(buf, sizeof(buf), stdin)) { >>>> fprintf(stdout, "got: %s", buf); >>>> fflush(NULL); >>>> } >>>> return 0; >>>> } >>>> -- 8< -- >>>> >>>> If this really is the bug, then doing something like "seq 10 | ./a.out" >>>> would drop some of the input lines. >>> >>> ...yep. It does. Specifically, I consistently only get the firsts >>> line: >>> >>> $ seq 10 | ./a.exe >>> got: 1 >>> >>> $ >>> >>> If I introduce a delay between the lines of stdin (which I tested by >>> just typing stdin from the keyboard), it works as expected. >>> >>> Looks like this one will need to go to the Cygwin mailing list; I'll >>> take it there shortly. Thank you all for your help getting this far! >> >> This is apparently fixed in cygwin v2.8.3 [see commit 78ade082fe, >> ('Revert "errno: Stop using _impure_ptr->_errno completely"', 19-07-2017), >> commit 9cc89b0438 ("cygwin: Use errno instead of _impure_ptr->_errno", 19-07-2017), commit a674199fc9 ("cygwin: Bump DLL version to 2.8.3", >> 19-07-2017) and commit d2ae2f00b8 ("cygwin: add fflush fix to release >> notes", 19-07-2017)]. >> >> I haven't had a chance to try v2.8.3 yet (it's 3am and I'm about to >> go get some sleep). > > Cygwin 2.8.3 hasn't been released yet, Heh, yes, I found that out myself this afternoon. ;-) > but I've just tested the latest > development snapshot with Jeff's simple test case, and it works as > expected, so I'm going to assume the Git test will start passing once > that version of the Cygwin DLL is released too. Hmm, I'm not keen on installing "snapshot"(s), so I think I will wait for the release to test it. (However, as a matter of interest, how would I obtain/install/test this snapshot release - is it a 'low-risk' exercise?) ATB, Ramsay Jones