Date: Fri, 26 Jun 2020 12:06:24 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: errno not set to EBADF when reading from invalid descriptor On Fri, Jun 26, 2020 at 07:14:00AM +0200, Markus Wichmann wrote: > On Thu, Jun 25, 2020 at 11:38:04AM -0400, Rich Felker wrote: > > Note that there are lots of other reasons you can't safely use stdio > > read functions on a stream you don't know is suitable for it. > > Switching from writing to reading without a successful flush produces > > UB, and switching the other direction without a successful seek does, > > even if the FILE stream is open for both. > > So I can't actually use a FILE open for reading and writing that refers > to something non-seekable, like a serial line, to both read and write to > it? I mean, I suppose I could write something and then flush and stay in > read mode forever, but that is not really the nature of my application. > I suppose I'll just open the serial line twice. Indeed, you basically always need 2 FILEs for bidirectional io. The only case where you don't is when it's a normal seekable file and you're willing to follow the arcane rules for switching modes (which may make sense if it's a trivial case like writing whole file, rewinding, then only reading from that point forward, which is a fairly canonical use case for tmpfile()). Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.