Re: [PATCH 2/2] Check for IO errors after running a command
From: Jim Meyering <hidden>
Date: 2016-06-15 22:43:18
Junio C Hamano [off-list ref] wrote:
Linus Torvalds [off-list ref] writes:
...
quoted
For example, then we could just do status = p->fn(...); if (status) return status; /* Somebody closed stdout? */ if (fstat(fileno(stdout), &st)) return 0; /* Ignore write errors for pipes and sockets.. */ if (S_ISFIFO(st.st_mode) || S_ISSOCK(st.st_mode)) return 0; which makes it easy to explain what's going on, and avoids having any deep indentation at all.I took the liberty of munging your two patches to follow your comments above
That has the disadvantage of ignoring *all* pipe and socket write errors. IMHO, git would be better served if it didn't do that, since writing to those can fail with EIO and even a new one: EACCES (though this latter is only for sockets). Also possible, according to POSIX: ENOBUFS. Of course, one can probably argue that those are all unlikely. They may be even less likely than an actual EPIPE, but the point is that people and tools using git plumbing should be able to rely on it to report such write failures, no matter how unusual they are.