AU: Mix stdout and stderr together in the logs.
BUG=none
TEST=Updated on tegra2_dev-board
Review URL: http://codereview.chromium.org/3398011
Change-Id: Ide2325f346e1858381da398c52659e53d0b20e44
diff --git a/subprocess.cc b/subprocess.cc
index 99605dd..8671584 100755
--- a/subprocess.cc
+++ b/subprocess.cc
@@ -6,6 +6,7 @@
#include <stdlib.h>
#include <string.h>
#include <string>
+#include <unistd.h>
#include <vector>
#include "base/logging.h"
#include "base/scoped_ptr.h"
@@ -28,6 +29,10 @@
delete tag;
}
+void Subprocess::GRedirectStderrToStdout(gpointer user_data) {
+ dup2(1, 2);
+}
+
namespace {
void FreeArgv(char** argv) {
for (int i = 0; argv[i]; i++) {
@@ -124,25 +129,22 @@
ScopedFreeArgPointer argp_free(argp);
char* child_stdout;
- char* child_stderr;
bool success = g_spawn_sync(NULL, // working directory
argv.get(),
argp,
- static_cast<GSpawnFlags>(NULL), // flags
- NULL, // child setup function
+ G_SPAWN_STDERR_TO_DEV_NULL, // flags
+ GRedirectStderrToStdout, // child setup function
NULL, // data for child setup function
&child_stdout,
- &child_stderr,
+ NULL,
return_code,
&err);
FreeArgv(argv.get());
if (err)
LOG(INFO) << "err is: " << err->code << ", " << err->message;
if (child_stdout && strlen(child_stdout))
- LOG(INFO) << "Subprocess stdout:" << child_stdout;
- if (child_stderr && strlen(child_stderr))
- LOG(INFO) << "Subprocess stderr:" << child_stderr;
+ LOG(INFO) << "Subprocess output:\n" << child_stdout;
return success;
}