Quoth David Edmondson on Dec 22 at 7:25 pm: > On Thu, 22 Dec 2011 14:03:05 -0500, Austin Clements <amdragon at MIT.EDU> > wrote: > > > 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. > > As I said, the principle is sound. What would do in this specific case? > > static void > handle_sigint (unused (int sig)) > { > static char msg[] = "Stopping... \n"; > > write(2, msg, sizeof(msg)-1); > interrupted = 1; > } > > Just this? > > if (write(2, msg, sizeof(msg)-1) { > /* Appease the compiler. */; > }
Maybe I missed something, but what's wrong with using a standard write loop (like j4ni suggested on IRC)? In my mind this isn't about appeasing the compiler; the compiler is pointing out a real bug. Patch coming in a moment... I'm not sure what to do about the specific case of fwrite, though judging by http://sourceware.org/bugzilla/show_bug.cgi?id=11959 I'm not the only person who thinks that fwrite being warn_unused_result is odd.