diff --git a/core/errorhelper.c b/core/errorhelper.c index 36b58e264..ad8caa190 100644 --- a/core/errorhelper.c +++ b/core/errorhelper.c @@ -6,24 +6,42 @@ #include #include "errorhelper.h" #include "membuffer.h" +#include "qthelper.h" + +#if !defined(Q_OS_ANDROID) && !defined(__ANDROID__) +#define LOG_MSG(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__) +#else +#include +#define LOG_MSG(fmt, ...) __android_log_print(ANDROID_LOG_INFO, "Subsurface", fmt, ##__VA_ARGS__); +#endif #define VA_BUF(b, fmt) do { va_list args; va_start(args, fmt); put_vformat(b, fmt, args); va_end(args); } while (0) int verbose; +void report_info(const char *fmt, ...) +{ + struct membuffer buf = { 0 }; + + VA_BUF(&buf, fmt); + strip_mb(&buf); + LOG_MSG("INFO: %s\n", mb_cstring(&buf)); +} + static void (*error_cb)(char *) = NULL; int report_error(const char *fmt, ...) { struct membuffer buf = { 0 }; + VA_BUF(&buf, fmt); + strip_mb(&buf); + LOG_MSG("ERROR: %s\n", mb_cstring(&buf)); + /* if there is no error callback registered, don't produce errors */ if (!error_cb) return -1; - - VA_BUF(&buf, fmt); error_cb(detach_cstring(&buf)); - return -1; } diff --git a/core/qthelper.h b/core/qthelper.h index b8b4523e3..ddc0d3ac3 100644 --- a/core/qthelper.h +++ b/core/qthelper.h @@ -174,17 +174,14 @@ fraction_t string_to_fraction(const char *str); char *get_changes_made(); void emit_reset_signal(); +extern void report_info(const char *fmt, ...); + #ifdef __cplusplus } #endif // 4) SSRF_INFO macro to replace fprintf calls in our code // (originally based on logging bits from libdivecomputer) -#if !defined(Q_OS_ANDROID) && !defined(__ANDROID__) -#define SSRF_INFO(fmt, ...) fprintf(stderr, "INFO: " fmt "\n", ##__VA_ARGS__) -#else -#include -#define SSRF_INFO(fmt, ...) __android_log_print(ANDROID_LOG_INFO, "Subsurface", "INFO: " fmt "\n", ##__VA_ARGS__); -#endif +#define SSRF_INFO(fmt, ...) report_info(fmt, ##__VA_ARGS__) #endif // QTHELPER_H