#define LIBDS_LOG_H
#include <stdbool.h>
+#include <stdio.h>
#include <stdarg.h>
#include <string.h>
-#include <errno.h>
#ifdef __cplusplus
extern "C" {
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__)
#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__)
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <errno.h>
#include <wayland-server.h>
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)
{