Merge pull request #790 from git-hulk/feature/logs-to-stdout

Add the logtostdout and colorlogtostdout flag to allow logging to stdout
diff --git a/README.rst b/README.rst
index 6895463..0131f49 100644
--- a/README.rst
+++ b/README.rst
@@ -623,7 +623,7 @@
 
    void YourFailureFunction() {
      // Reports something...
-     exit(1);
+     exit(EXIT_FAILURE);
    }
 
    int main(int argc, char* argv[]) {
diff --git a/src/glog/logging.h.in b/src/glog/logging.h.in
index b34ec2c..489c97f 100644
--- a/src/glog/logging.h.in
+++ b/src/glog/logging.h.in
@@ -1825,7 +1825,7 @@
 void TestOnly_ClearLoggingDirectoriesList();
 
 // Returns a set of existing temporary directories, which will be a
-// subset of the directories returned by GetLogginDirectories().
+// subset of the directories returned by GetLoggingDirectories().
 // Thread-safe.
 GLOG_EXPORT void GetExistingTempDirectories(
     std::vector<std::string>* list);
@@ -1960,7 +1960,7 @@
 #pragma warning(push)
 #pragma warning(disable : 4722)
 #endif // _MSC_VER
-  @ac_cv___attribute___noreturn@ ~NullStreamFatal() throw () { _exit(1); }
+  @ac_cv___attribute___noreturn@ ~NullStreamFatal() throw () { _exit(EXIT_FAILURE); }
 #if defined(_MSC_VER)
 #pragma warning(pop)
 #endif // _MSC_VER
diff --git a/src/glog/raw_logging.h.in b/src/glog/raw_logging.h.in
index b845f67..66fec91 100644
--- a/src/glog/raw_logging.h.in
+++ b/src/glog/raw_logging.h.in
@@ -124,7 +124,7 @@
 #define RAW_LOG_FATAL(...) \
   do { \
     @ac_google_namespace@::RawLogStub__(0, __VA_ARGS__);        \
-    exit(1); \
+    exit(EXIT_FAILURE); \
   } while (0)
 #endif // STRIP_LOG <= 3
 
diff --git a/src/googletest.h b/src/googletest.h
index d5df9a4..5761361 100644
--- a/src/googletest.h
+++ b/src/googletest.h
@@ -76,13 +76,16 @@
 #define GLOG_EXPORT
 
 static inline string GetTempDir() {
-#ifndef GLOG_OS_WINDOWS
-  return "/tmp";
-#else
-  char tmp[MAX_PATH];
-  GetTempPathA(MAX_PATH, tmp);
-  return tmp;
-#endif
+  vector<string> temp_directories_list;
+  google::GetExistingTempDirectories(&temp_directories_list);
+
+  if (temp_directories_list.empty()) {
+    fprintf(stderr, "No temporary directory found\n");
+    exit(EXIT_FAILURE);
+  }
+
+  // Use first directory from list of existing temporary directories.
+  return temp_directories_list.front();
 }
 
 #if defined(GLOG_OS_WINDOWS) && defined(_MSC_VER) && !defined(TEST_SRC_DIR)
@@ -127,7 +130,7 @@
     if (abs(val1 - val2) > abs_error) {                                        \
       fprintf(stderr, "Check failed: %s within %s of %s\n", #val1, #abs_error, \
               #val2);                                                          \
-      exit(1);                                                                 \
+      exit(EXIT_FAILURE);                                                      \
     }                                                                          \
   } while (0)
 
@@ -135,7 +138,7 @@
   do {                                                  \
     if (!(cond)) {                                      \
       fprintf(stderr, "Check failed: %s\n", #cond);     \
-      exit(1);                                          \
+      exit(EXIT_FAILURE);                               \
     }                                                   \
   } while (0)
 
@@ -145,7 +148,7 @@
   do {                                                                  \
     if (!((val1) op (val2))) {                                          \
       fprintf(stderr, "Check failed: %s %s %s\n", #val1, #op, #val2);   \
-      exit(1);                                                          \
+      exit(EXIT_FAILURE);                                               \
     }                                                                   \
   } while (0)
 
@@ -158,7 +161,7 @@
   do {                                                          \
     if (!isnan(arg)) {                                          \
       fprintf(stderr, "Check failed: isnan(%s)\n", #arg);       \
-      exit(1);                                                  \
+      exit(EXIT_FAILURE);                                       \
     }                                                           \
   } while (0)
 
@@ -166,7 +169,7 @@
   do {                                                          \
     if (!isinf(arg)) {                                          \
       fprintf(stderr, "Check failed: isinf(%s)\n", #arg);       \
-      exit(1);                                                  \
+      exit(EXIT_FAILURE);                                       \
     }                                                           \
   } while (0)
 
@@ -174,7 +177,7 @@
   do {                                                                  \
     if (((val1) < (val2) - 0.001 || (val1) > (val2) + 0.001)) {         \
       fprintf(stderr, "Check failed: %s == %s\n", #val1, #val2);        \
-      exit(1);                                                          \
+      exit(EXIT_FAILURE);                                               \
     }                                                                   \
   } while (0)
 
@@ -182,7 +185,7 @@
   do {                                                                  \
     if (strcmp((val1), (val2)) != 0) {                                  \
       fprintf(stderr, "Check failed: streq(%s, %s)\n", #val1, #val2);   \
-      exit(1);                                                          \
+      exit(EXIT_FAILURE);                                               \
     }                                                                   \
   } while (0)
 
@@ -236,7 +239,7 @@
     g_logging_fail_func = original_logging_fail_func;                   \
     if (!g_called_abort) {                                              \
       fprintf(stderr, "Function didn't die (%s): %s\n", msg, #fn);      \
-      exit(1);                                                          \
+      exit(EXIT_FAILURE);                                               \
     }                                                                   \
   } while (0)
 #endif
diff --git a/src/logging_custom_prefix_unittest.cc b/src/logging_custom_prefix_unittest.cc
index fa12ecd..615dce7 100644
--- a/src/logging_custom_prefix_unittest.cc
+++ b/src/logging_custom_prefix_unittest.cc
@@ -783,7 +783,7 @@
   if (pid == 0) {
     LOG(INFO) << "message to new base, child - should only appear on STDERR not on the file";
     ShutdownGoogleLogging(); //for children proc
-    exit(0);
+    exit(EXIT_SUCCESS);
   } else if (pid > 0) {
     wait(NULL);
   }
diff --git a/src/logging_unittest.cc b/src/logging_unittest.cc
index 040564f..728b5fe 100644
--- a/src/logging_unittest.cc
+++ b/src/logging_unittest.cc
@@ -794,7 +794,7 @@
   if (pid == 0) {
     LOG(INFO) << "message to new base, child - should only appear on STDERR not on the file";
     ShutdownGoogleLogging(); //for children proc
-    exit(0);
+    exit(EXIT_SUCCESS);
   } else if (pid > 0) {
     wait(NULL);
   }