Bug 1207401 - Send B2G sandbox logging to both stderr and logcat. r=kang
authorJed Davis <jld@mozilla.com>
Mon, 05 Oct 2015 09:21:39 -0700
changeset 266157 06b3c63c39aa74bce1b83316b19d9920405c959b
parent 266156 1146081cebce1d94135829a0204e8d0449c38415
child 266158 5f583313a353232b542a82f957cd6cac905adefa
push id29483
push usercbook@mozilla.com
push dateTue, 06 Oct 2015 10:01:59 +0000
treeherdermozilla-central@89732fcdb0ba [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskang
bugs1207401
milestone44.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1207401 - Send B2G sandbox logging to both stderr and logcat. r=kang
security/sandbox/linux/SandboxLogging.cpp
--- a/security/sandbox/linux/SandboxLogging.cpp
+++ b/security/sandbox/linux/SandboxLogging.cpp
@@ -3,61 +3,57 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "SandboxLogging.h"
 
 #ifdef ANDROID
 #include <android/log.h>
-#else
+#endif
 #include <algorithm>
 #include <stdio.h>
 #include <sys/uio.h>
 #include <unistd.h>
-#endif
 
 #include "base/posix/eintr_wrapper.h"
 
 namespace mozilla {
 
-#ifndef ANDROID
 // Alters an iovec array to remove the first `toDrop` bytes.  This
 // complexity is necessary because writev can return a short write
 // (e.g., if stderr is a pipe and the buffer is almost full).
 static void
 IOVecDrop(struct iovec* iov, int iovcnt, size_t toDrop)
 {
   while (toDrop > 0 && iovcnt > 0) {
     size_t toDropHere = std::min(toDrop, iov->iov_len);
     iov->iov_base = static_cast<char*>(iov->iov_base) + toDropHere;
     iov->iov_len -= toDropHere;
     toDrop -= toDropHere;
     ++iov;
     --iovcnt;
   }
 }
-#endif
 
 void
 SandboxLogError(const char* message)
 {
 #ifdef ANDROID
   // This uses writev internally and appears to be async signal safe.
   __android_log_write(ANDROID_LOG_ERROR, "Sandbox", message);
-#else
+#endif
   static const char logPrefix[] = "Sandbox: ", logSuffix[] = "\n";
   struct iovec iovs[3] = {
     { const_cast<char*>(logPrefix), sizeof(logPrefix) - 1 },
     { const_cast<char*>(message), strlen(message) },
     { const_cast<char*>(logSuffix), sizeof(logSuffix) - 1 },
   };
   while (iovs[2].iov_len > 0) {
     ssize_t written = HANDLE_EINTR(writev(STDERR_FILENO, iovs, 3));
     if (written <= 0) {
       break;
     }
     IOVecDrop(iovs, 3, static_cast<size_t>(written));
   }
-#endif
 }
 
 }