debug output: ensure our debug output is captured on Android

I would have bet money that Android used to send stderr to the logcat
log, but apparently it doesn't (anymore?). So in order to be able to
have a chance to debug weird cloud storage issues on Android, let's do
some wholesale replacement of fprintf(stderr,...) with our own version
of the INFO macro that we long ago borrowed from libdivecomputer (and
rename it to ensure we don't have a conflict there).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-04-17 13:02:25 -07:00
parent 47506028ca
commit f9f4a9c232
8 changed files with 64 additions and 61 deletions

View file

@ -1,13 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "messagehandlermodel.h"
/* based on logging bits from libdivecomputer */
#if !defined(Q_OS_ANDROID)
#define INFO(fmt, ...) fprintf(stderr, "INFO: " fmt "\n", ##__VA_ARGS__)
#else
#include <android/log.h>
#define INFO(fmt, ...) __android_log_print(ANDROID_LOG_DEBUG, "Subsurface", "INFO: " fmt "\n", ##__VA_ARGS__);
#endif
#include "core/qthelper.h"
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
extern void writeToAppLogFile(QString logText);
@ -49,7 +42,7 @@ void MessageHandlerModel::addLog(QtMsgType type, const QString& message)
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_data.append({message, type});
endInsertRows();
INFO("%s", qPrintable(message));
SSRF_INFO("%s", qPrintable(message));
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
writeToAppLogFile(message);
#endif