daemon: Always reflect command stderr to stderr when debugging.
authorRichard W.M. Jones <rjones@redhat.com>
Fri, 6 Nov 2009 17:27:02 +0000 (17:27 +0000)
committerRichard Jones <rjones@redhat.com>
Mon, 9 Nov 2009 11:05:19 +0000 (11:05 +0000)
When debugging (ie. LIBGUESTFS_DEBUG=1 & verbose flag set in daemon)
always reflect any stderr output from commands that we run to
stderr of the daemon, so it is visible.

Previously if stderror == NULL in command*, stderr output was
just eaten and discarded which meant useful error messages could
be lost.

daemon/guestfsd.c

index bf06c73..370eea8 100644 (file)
@@ -38,6 +38,8 @@
 #include <printf.h>
 
 #include "c-ctype.h"
+#include "ignore-value.h"
+
 #include "daemon.h"
 
 static char *read_cmdline (void);
@@ -742,15 +744,20 @@ commandrvf (char **stdoutput, char **stderror, int flags,
       }
       if (r == 0) { FD_CLR (se_fd[0], &rset); quit++; }
 
-      if (r > 0 && stderror) {
-        se_size += r;
-        p = realloc (*stderror, se_size);
-        if (p == NULL) {
-          perror ("realloc");
-          goto quit;
-        }
-        *stderror = p;
-        memcpy (*stderror + se_size - r, buf, r);
+      if (r > 0) {
+       if (verbose)
+         ignore_value (write (2, buf, r));
+
+       if (stderror) {
+         se_size += r;
+         p = realloc (*stderror, se_size);
+         if (p == NULL) {
+           perror ("realloc");
+           goto quit;
+         }
+         *stderror = p;
+         memcpy (*stderror + se_size - r, buf, r);
+       }
       }
     }
   }