X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=daemon%2Fguestfsd.c;h=e18ab311c5d5bad4dc253a1aef8daae89658f18b;hb=6cdd349e6964636c2b7ae71453dca33716dda486;hp=e398b7d8348410fad052a94ebe27bde014e4b0a9;hpb=d89a88d67e577ee6111820cb44c3440b7772608d;p=libguestfs.git diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index e398b7d..e18ab31 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -142,6 +142,8 @@ main (int argc, char *argv[]) int dont_fork = 0; char *cmdline; + ignore_value (chdir ("/")); + if (winsock_init () == -1) error (EXIT_FAILURE, 0, "winsock initialization failed"); @@ -258,6 +260,7 @@ main (int argc, char *argv[]) "output to the libguestfs developers, either in a bug report\n" "or on the libguestfs redhat com mailing list.\n" "\n"); + perror ("/dev/virtio-ports/org.libguestfs.channel.0"); exit (EXIT_FAILURE); } @@ -270,8 +273,10 @@ main (int argc, char *argv[]) xdrmem_create (&xdr, lenbuf, sizeof lenbuf, XDR_ENCODE); xdr_u_int (&xdr, &len); - if (xwrite (sock, lenbuf, sizeof lenbuf) == -1) + if (xwrite (sock, lenbuf, sizeof lenbuf) == -1) { + perror ("xwrite"); exit (EXIT_FAILURE); + } xdr_destroy (&xdr); @@ -689,6 +694,7 @@ commandrvf (char **stdoutput, char **stderror, int flags, } if (pid == 0) { /* Child process running the command. */ + signal (SIGPIPE, SIG_DFL); close (0); if (flag_copy_stdin) { dup2 (stdin_fd[0], 0); @@ -777,9 +783,13 @@ commandrvf (char **stdoutput, char **stderror, int flags, quit = 0; while (quit < 2) { + again: rset2 = rset; r = select (MAX (so_fd[0], se_fd[0]) + 1, &rset2, NULL, NULL, NULL); if (r == -1) { + if (errno == EINTR) + goto again; + perror ("select"); quit: if (stdoutput) free (*stdoutput); @@ -974,7 +984,8 @@ trim (char *str) } /* printf helper function so we can use %Q ("quoted") and %R to print - * shell-quoted strings. See HACKING file for more details. + * shell-quoted strings. See guestfs(3)/EXTENDING LIBGUESTFS for more + * details. */ static int print_shell_quote (FILE *stream,