* - BT_LOGF("format string", args, ...)
*
* Message and error string (errno) logging macros:
- * - BT_LOGV_ERRNO("format string", args, ...)
- * - BT_LOGD_ERRNO("format string", args, ...)
- * - BT_LOGI_ERRNO("format string", args, ...)
- * - BT_LOGW_ERRNO("format string", args, ...)
- * - BT_LOGE_ERRNO("format string", args, ...)
- * - BT_LOGF_ERRNO("format string", args, ...)
+ * - BT_LOGV_ERRNO("initial message", "format string", args, ...)
+ * - BT_LOGD_ERRNO("initial message", "format string", args, ...)
+ * - BT_LOGI_ERRNO("initial message", "format string", args, ...)
+ * - BT_LOGW_ERRNO("initial message", "format string", args, ...)
+ * - BT_LOGE_ERRNO("initial message", "format string", args, ...)
+ * - BT_LOGF_ERRNO("initial message", "format string", args, ...)
*
* Memory logging macros:
* - BT_LOGV_MEM(data_ptr, data_sz, "format string", args, ...)
} _BT_LOG_ONCE
#endif
-#if (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE
- /* XSI-compliant version of strerror_r(). */
- #define BT_LOG_WRITE_ERRNO(lvl, tag, _msg, _fmt, args...) \
- do { \
- char error_str[BUFSIZ]; \
- memset(error_str, 0, sizeof(error_str)); \
- (void) strerror_r(errno, error_str, sizeof(error_str)); \
- BT_LOG_WRITE(lvl, tag, _msg ": %s. " _fmt, error_str, ## args); \
- } _BT_LOG_ONCE
-#else
- /* GNU version of strerror_r(). */
- #define BT_LOG_WRITE_ERRNO(lvl, tag, _msg, _fmt, args...) \
- do { \
- char error_str_buf[BUFSIZ]; \
- char *error_str; \
- error_str = strerror_r(errno, error_str_buf, sizeof(error_str_buf)); \
- BT_LOG_WRITE(lvl, tag, _msg ": %s. " _fmt, error_str, ## args); \
- } _BT_LOG_ONCE
-#endif
+#define BT_LOG_WRITE_ERRNO(lvl, tag, _msg, _fmt, args...) \
+ do { \
+ const char *error_str; \
+ error_str = g_strerror(errno); \
+ BT_LOG_WRITE(lvl, tag, _msg ": %s" _fmt, error_str, ## args); \
+ } _BT_LOG_ONCE
static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;}