From 80b13dfbc610d3e9e5353c35bf2c9dbd935e959d Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Mon, 5 Sep 2022 18:36:44 +0900 Subject: [PATCH] log: Replace strerror with strerror_r This means to use thread safe API. Change-Id: I68d157d1107261d3252991ec54ae8f16381fb221 --- include/libds/log.h | 6 ++---- src/log.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/include/libds/log.h b/include/libds/log.h index 5296d89..e588968 100644 --- a/include/libds/log.h +++ b/include/libds/log.h @@ -2,9 +2,9 @@ #define LIBDS_LOG_H #include +#include #include #include -#include #ifdef __cplusplus extern "C" { @@ -33,6 +33,7 @@ enum ds_log_level ds_log_get_level(void); void _ds_log(enum ds_log_level level, const char *format, ...) _DS_ATTRIB_PRINTF(2, 3); void _ds_vlog(enum ds_log_level level, const char *format, va_list args) _DS_ATTRIB_PRINTF(2, 0); +void ds_log_errno(enum ds_log_level level, const char *fmt, ...); #define ds_log(level, fmt, ...) \ _ds_log(level, "[%s:%d] " fmt, __FILE__, __LINE__, ##__VA_ARGS__) @@ -40,9 +41,6 @@ void _ds_vlog(enum ds_log_level level, const char *format, va_list args) _DS_ATT #define ds_vlog(level, fmt, args) \ _ds_vlog(level, "[%s:%d] " fmt, __FILE__, __LINE__, args) -#define ds_log_errno(level, fmt, ...) \ - ds_log(level, fmt ": %s", ##__VA_ARGS__, strerror(errno)) - #define ds_err(fmt, ...) \ ds_log(DS_ERR, fmt, ##__VA_ARGS__) diff --git a/src/log.c b/src/log.c index 67386af..cc028f8 100644 --- a/src/log.c +++ b/src/log.c @@ -4,6 +4,7 @@ #include #include #include +#include #include @@ -58,6 +59,21 @@ _ds_log(enum ds_log_level level, const char *fmt, ...) va_end(args); } +WL_EXPORT void +ds_log_errno(enum ds_log_level level, const char *fmt, ...) +{ + static char ds_fmt[1024]; + char err_str[256] = {'\0',}; + va_list args; + + strerror_r(errno, err_str, sizeof(err_str)); + snprintf(ds_fmt, sizeof(ds_fmt), "%s : %s", fmt, err_str); + + va_start(args, fmt); + _ds_vlog(level, ds_fmt, args); + va_end(args); +} + enum ds_log_level ds_log_get_level(void) { -- 2.7.4