|
Message-ID: <20140712135834.GF179@brightrain.aerifal.cx> Date: Sat, 12 Jul 2014 09:58:34 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: [PATCH] implement the LOG_PERROR option in syslog On Sat, Jul 12, 2014 at 09:33:21AM +0100, Laurent Bercot wrote: > On 12/07/2014 02:15, Rich Felker wrote: > >I think I'll change this to dprintf. Using a single write like this > >without looping on partial writes is not guaranteed to work. dprintf > >is overkill, but we pull in the printf framework anyway so it doesn't > >hurt to use it. > > Don't you have a wrapper for write() that loops around partial writes > without pulling in printf ? I'd have thought it was needed in more than > one place in the libc, So far none have come up. There's very little code in libc that writes to files. A few places (dns, syslog) write to sockets, but they use send on datagram sockets in a manner where success or failure has to be atomic (you can't retry on partial write with datagrams). There are also a couple of places (posix_spawn comes to mind) that write to internal pipes, but the same applies: writes < PIPE_BUF are atomic. Anyway, actually it would be a good idea to check for invalid uses of read or write without retry in musl, but I doubt there are any serious ones left. > stdio being only one of them. stdio uses writev in a more complex way that doesn't easily generalize to generic usage like this, since it's working with both a FILE buffer and a secondary buffer provided by the caller. 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.