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