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, 27 Jul 2011 13:50:30 +0000 (14:50 +0100)
(cherry picked from commit 8b2e60ce4b46e86da093ee64d4e0b0ae3c998d55)

src/launch.c

index 58fb0d1..3e46e8f 100644 (file)
@@ -602,7 +602,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]);
@@ -618,6 +618,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]);
     }