On Thu, May 06, 2010 at 10:04:09PM +0100, Richard W.M. Jones wrote:
+ if (xwrite (1, buffer, n) == -1)
+ _exit (EXIT_FAILURE);
To implement 'head' I had to change this to:
if (xwrite (1, buffer, n) == -1)
/* EPIPE error indicates the command process has exited
* early. If the command process fails that will be caught
* by the daemon, and if not, then it's not an error.
*/
_exit (errno == EPIPE ? EXIT_SUCCESS : EXIT_FAILURE);
This is of course because the head process exits early, so causing
this process to get EPIPE.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://et.redhat.com/~rjones/libguestfs/
See what it can do:
http://et.redhat.com/~rjones/libguestfs/recipes.html