On Sun, 24 Jun 2007, Junio C Hamano wrote:
I still do not like the fact that this patch makes an error from
the final stdout flushing override the return value from p->fn()
even when the function already diagnosed an error
Yeah.
I also don't think it's very _pretty_ code, and it violates my personal
coding standards by adding way too deep indentation for the new error
cases. It was already three indents deep (reasonably fine, but that
NOT_BARE test wass already pretty ugly), but now it becomes five
indentation levels deep at its deepest, which is just a sign that things
should be split up.
I'd also like to know why it does that fcntl() is done, and I also wonder
about that "ferror()" call: it is entirely possible that ferror() is set
due to EPIPE, and in that case, it will *not* set errno to EPIPE at all,
so it will *still* complain about what I consider an invalid situation.
I dunno. I think the ENOSPC worry is a very real and valid one, but I
would really tend prefer something different.
How about this following series of two patches instead, which I'll send as
replies to this email..
Linus