I have to say i am very much impressed (I've taken a look at only the first half up to #11, though). How much has this been used in real projects? A couple of comments: [3/17] I think losing "p->next = NULL" does not matter with the callers we have right now, but somehow this part makes me feel uneasy. [5/17] I think it makes sense to exit(0) for the existing write_or_die upon EPIPE because that indicates we are the upstream of the pipe and the reading process has exit (i.e. user said 'q' to less while we still have more to say). I suspect the symmetry would not hold for read_or_die; when we are reading, EPIPE is not any different from any other errors (except for EAGAIN or EINTR which we already take care of in xread()) and the net effect is that we could not read what we wanted to. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html