Quoth David Edmondson on Dec 22 at 7:21 am: > On Thu, 22 Dec 2011 02:03:45 -0500, Austin Clements <amdragon@MIT.EDU> wrote: > > I must admit I haven't been following the warnings problem very > > closely, but perhaps we shouldn't be ignoring these return codes? > > In general I agree, but what would we do if writing an error message to > stderr fails? This was discussed on IRC, but calls to write(2) should never be bare. I believe it's marked warn_unused_result not because libc is so concerned with people checking for error returns (otherwise all sorts of things would be marked warn_unused_result) but because even a successful write can be a short write. Hence, not checking the result is a bug, even if you don't care about errors. fwrite's a little trickier, since it will only short-write on an error, so to me it seems perfectly legitimate to ignore the result if you don't care about errors. I don't seem to have whatever glibc version the buildbot does that marks these warn_unused_result, but I can reproduce it by adding __attribute__((warn_unused_result)) ssize_t write(int fd, const void *buf, size_t count); __attribute__((warn_unused_result)) size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); to notmuch-client.h. Testing with these, if I add any form of result checking, even if it does nothing in most cases, GCC is quiet.