From: Jonathan Nieder Date: Wed, 19 Nov 2014 01:43:44 GMT Subject: Re: [PATCH 1/4] error: save and restore errno Message-ID: <20141119014344.GP6527@google.com> In-Reply-To: <20141119013710.GA2135@peff.net> Jeff King wrote: > It's common to use error() to return from a function, like: > > if (open(...) < 0) > return error("open failed"); > > Unfortunately this may clobber the errno from the open() > call. So we often end up with code like this: > > if (open(...) < 0) { > int saved_errno = errno; > error("open failed"); > errno = saved_errno; > return -1; > } > > which is less nice. What the above doesn't explain is why the caller cares about errno. Are they going to print another message with strerror(errno)? Or are they going to consider some errors non-errors (like ENOENT when trying to unlink a file), in which case why is printing a message to stderr okay? All that said, given that there are real examples of code already doing this, the patch seems sane. [...] > usage.c | 3 +++ > 1 file changed, 3 insertions(+) Reviewed-by: Jonathan Nieder