appliance: Capture stderr from qemu to the event system.
authorRichard W.M. Jones <rjones@redhat.com>
Wed, 20 Jul 2011 11:07:30 +0000 (12:07 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Wed, 20 Jul 2011 11:08:40 +0000 (12:08 +0100)
src/launch.c

index a2a9bea..c89c69f 100644 (file)
@@ -625,7 +625,7 @@ launch_appliance (guestfs_h *g)
       guestfs___print_timestamped_argv (g, (const char **)g->cmdline);
 
     if (!g->direct) {
-      /* Set up stdin, stdout. */
+      /* Set up stdin, stdout, stderr. */
       close (0);
       close (1);
       close (wfd[1]);
@@ -641,6 +641,14 @@ launch_appliance (guestfs_h *g)
       if (dup (rfd[1]) == -1)
         goto dup_failed;
 
+      /* Particularly since qemu 0.15, qemu spews all sorts of debug
+       * information on stderr.  It is useful to both capture this and
+       * not confuse casual users, so send stderr to the pipe as well.
+       */
+      close (2);
+      if (dup (rfd[1]) == -1)
+        goto dup_failed;
+
       close (wfd[0]);
       close (rfd[1]);
     }