fflush(NULL) clobbers input streams

Achim Gratz Stromeko@nexgo.de
Mon Jul 17 17:53:00 GMT 2017


Perl configure for 5.22.1 on Cygwin 2.4.0 said this:

--8<---------------cut here---------------start------------->8---
Checking how to flush all pending stdio output...
Your fflush(NULL) works okay for output streams.
Let's see if it clobbers input pipes...
fflush(NULL) seems to behave okay with input streams.
--8<---------------cut here---------------end--------------->8---

I'm reasonably certain that the intervening Perl versions were also this
way, but I didn't keep the log files around unfortunately.

Now, using Cygwin 2.8.x to configure Perl 5.22.4 I got this instead:

--8<---------------cut here---------------start------------->8---
Checking how to flush all pending stdio output...
Your fflush(NULL) works okay for output streams.
Let's see if it clobbers input pipes...
Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
Sigh. Flushing explicitly all the stdio streams doesn't work.
--8<---------------cut here---------------end--------------->8---

It seems that fflush is only supposed to discard buffered input data on
seekable files, but not pipes (per POSIX.1-2008), so this looks a
regression to me.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Waldorf MIDI Implementation & additional documentation:
http://Synth.Stromeko.net/Downloads.html#WaldorfDocs



More information about the Cygwin-apps mailing list