[lxc-devel] [lxc/master] log: add strerror_r macro
2xsec on Github
lxc-bot at linuxcontainers.org
Mon Jun 25 13:05:39 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 539 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180625/071aef48/attachment.bin>
-------------- next part --------------
From 6f2c37f07300ec428ae90a33c55820e1b0b8bfcf Mon Sep 17 00:00:00 2001
From: 2xsec <dh48.jeong at samsung.com>
Date: Mon, 25 Jun 2018 22:00:43 +0900
Subject: [PATCH] log: add strerror_r macro
Signed-off-by: 2xsec <dh48.jeong at samsung.com>
---
src/lxc/log.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++--
src/lxc/lsm/apparmor.c | 1 +
src/lxc/lsm/lsm.c | 1 +
src/lxc/lsm/selinux.c | 1 +
src/lxc/monitor.c | 1 +
src/lxc/state.c | 1 +
src/lxc/sync.c | 1 +
src/lxc/terminal.c | 1 +
8 files changed, 57 insertions(+), 2 deletions(-)
diff --git a/src/lxc/log.h b/src/lxc/log.h
index 960209777..a39cea7b8 100644
--- a/src/lxc/log.h
+++ b/src/lxc/log.h
@@ -292,6 +292,28 @@ ATTR_UNUSED static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
#define lxc_log_category_priority(name) \
(lxc_log_priority_to_string(lxc_log_category_##name.priority))
+/*
+ * Helper macro to define errno string.
+ */
+#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !defined(_GNU_SOURCE)
+#define lxc_log_strerror_define \
+ char errno_buf[1024] = {0}; \
+ char* ptr = errno_buf; \
+ \
+ if (strerror_r(errno, errno_buf, sizeof(errno_buf))) \
+ strncpy(errno_buf, "Failed to get errno string.", sizeof(errno_buf));
+#else
+#define lxc_log_strerror_define \
+ char errno_buf[1024] = {0}; \
+ char* ptr; \
+ \
+ ptr = strerror_r(errno, errno_buf, sizeof(errno_buf)); \
+ if (!ptr) { \
+ strncpy(errno_buf, "Failed to get errno string.", sizeof(errno_buf)); \
+ ptr = errno_buf; \
+ }
+#endif
+
/*
* top categories
*/
@@ -342,8 +364,34 @@ ATTR_UNUSED static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo, \
-#define SYSERROR(format, ...) do { \
- ERROR("%s - " format, strerror(errno), ##__VA_ARGS__); \
+#define SYSTRACE(format, ...) do { \
+ lxc_log_strerror_define \
+ TRACE("%s - " format, ptr, ##__VA_ARGS__); \
+} while (0)
+
+#define SYSDEBUG(format, ...) do { \
+ lxc_log_strerror_define \
+ DEBUG("%s - " format, ptr, ##__VA_ARGS__); \
+} while (0)
+
+#define SYSINFO(format, ...) do { \
+ lxc_log_strerror_define \
+ INFO("%s - " format, ptr, ##__VA_ARGS__); \
+} while (0)
+
+#define SYSNOTICE(format, ...) do { \
+ lxc_log_strerror_define \
+ NOTICE("%s - " format, ptr, ##__VA_ARGS__); \
+} while (0)
+
+#define SYSWARN(format, ...) do { \
+ lxc_log_strerror_define \
+ WARN("%s - " format, ptr, ##__VA_ARGS__); \
+} while (0)
+
+#define SYSERROR(format, ...) do { \
+ lxc_log_strerror_define \
+ ERROR("%s - " format, ptr, ##__VA_ARGS__); \
} while (0)
extern int lxc_log_fd;
diff --git a/src/lxc/lsm/apparmor.c b/src/lxc/lsm/apparmor.c
index ec4168847..793d13f76 100644
--- a/src/lxc/lsm/apparmor.c
+++ b/src/lxc/lsm/apparmor.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/src/lxc/lsm/lsm.c b/src/lxc/lsm/lsm.c
index 5186fe902..e404002d6 100644
--- a/src/lxc/lsm/lsm.c
+++ b/src/lxc/lsm/lsm.c
@@ -21,6 +21,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/src/lxc/lsm/selinux.c b/src/lxc/lsm/selinux.c
index bd6541cfa..1d8ce4cba 100644
--- a/src/lxc/lsm/selinux.c
+++ b/src/lxc/lsm/selinux.c
@@ -21,6 +21,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <errno.h>
#include <stdlib.h>
#include <stdbool.h>
diff --git a/src/lxc/monitor.c b/src/lxc/monitor.c
index ebf2122c0..ed223a5b2 100644
--- a/src/lxc/monitor.c
+++ b/src/lxc/monitor.c
@@ -22,6 +22,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <errno.h>
#include <fcntl.h>
#include <inttypes.h>
diff --git a/src/lxc/state.c b/src/lxc/state.c
index 06aa3208a..12fd65386 100644
--- a/src/lxc/state.c
+++ b/src/lxc/state.c
@@ -21,6 +21,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
diff --git a/src/lxc/sync.c b/src/lxc/sync.c
index 9c20c1d69..adc6fb2c3 100644
--- a/src/lxc/sync.c
+++ b/src/lxc/sync.c
@@ -21,6 +21,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
diff --git a/src/lxc/terminal.c b/src/lxc/terminal.c
index eb745c5ff..e1089acf3 100644
--- a/src/lxc/terminal.c
+++ b/src/lxc/terminal.c
@@ -21,6 +21,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _GNU_SOURCE
#include <errno.h>
#include <fcntl.h>
#include <lxc/lxccontainer.h>
More information about the lxc-devel
mailing list