From 662cd2e97ab00ab6784f4c18885e6b78b20f65eb Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 2 Apr 2021 15:28:31 +0200 Subject: [PATCH] app/internal/log: [Android] don't truncate log lines Signed-off-by: Elias Naur --- app/internal/log/log_android.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/app/internal/log/log_android.go b/app/internal/log/log_android.go index 7936911a..1245598a 100644 --- a/app/internal/log/log_android.go +++ b/app/internal/log/log_android.go @@ -40,16 +40,22 @@ type androidLogWriter struct { } func (w *androidLogWriter) Write(data []byte) (int, error) { - // Truncate the buffer, leaving space for the '\0'. - if max := len(w.buf) - 1; len(data) > max { - data = data[:max] + n := 0 + for len(data) > 0 { + msg := data + // Truncate the buffer, leaving space for the '\0'. + if max := len(w.buf) - 1; len(msg) > max { + msg = msg[:max] + } + buf := w.buf[:len(msg)+1] + copy(buf, msg) + // Terminating '\0'. + buf[len(msg)] = 0 + C.__android_log_write(C.ANDROID_LOG_INFO, logTag, (*C.char)(unsafe.Pointer(&buf[0]))) + n += len(msg) + data = data[len(msg):] } - buf := w.buf[:len(data)+1] - copy(buf, data) - // Terminating '\0'. - buf[len(data)] = 0 - C.__android_log_write(C.ANDROID_LOG_INFO, logTag, (*C.char)(unsafe.Pointer(&buf[0]))) - return len(data), nil + return n, nil } func logFd(fd uintptr) {