changeset 26:8008ab68f482

Bug 1852: HeapStats 1.1 agent can't output WARM messages correctly when _GNU_SOURCE is enabled. reviewed-by: yasuenag
author KUBOTA Yuji <kubota.yuji@gmail.com>
date Sun, 22 Jun 2014 19:46:01 +0900
parents b8a514c97fb7
children e52df4e1bc2b
files agent/ChangeLog agent/src/logManager.cpp agent/src/util.hpp
diffstat 3 files changed, 28 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/agent/ChangeLog	Fri Jun 20 11:58:32 2014 +0900
+++ b/agent/ChangeLog	Sun Jun 22 19:46:01 2014 +0900
@@ -1,3 +1,7 @@
+2014-06-22  KUBOTA Yuji  <kubota.yuji@lab.ntt.co.jp>
+
+	* Bug 1852: HeapStats 1.1 agent can't output WARM messages correctly when _GNU_SOURCE is enabled.
+
 2014-06-20  KUBOTA Yuji  <kubota.yuji@lab.ntt.co.jp>
 
 	* Bug 1849: HeapStats agent should collect systemd-journald information
--- a/agent/src/logManager.cpp	Fri Jun 20 11:58:32 2014 +0900
+++ b/agent/src/logManager.cpp	Sun Jun 22 19:46:01 2014 +0900
@@ -1261,11 +1261,20 @@
     result = copyFile(copyFileList[i], basePath);
     if(unlikely(result != 0)){
       char error_string[1024];
+
+#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE
+      /* XSI-compliant version of strerror_r() */
       strerror_r(result, error_string, 1024);
+#endif
 
       PRINT_WARN_MSG_HEADER << "Failure copy file."
                 << " path:\"" << copyFileList[i] << "\""
-                << " cause:\"" << error_string << "\"" 
+#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE
+                << " cause:\"" << error_string << "\""
+#else
+                /* GNU-specific version of strerror_r() */
+                << " cause:\"" << strerror_r(result, error_string, 1024) << "\""
+#endif
                 << NEWLINE;
 
       /* If disk is full. */
--- a/agent/src/util.hpp	Fri Jun 20 11:58:32 2014 +0900
+++ b/agent/src/util.hpp	Sun Jun 22 19:46:01 2014 +0900
@@ -113,11 +113,20 @@
 /*!
  * \brief Warning message and errno macro.
  */
-#define PRINT_WARN_MSG_AND_ERRNO(msg, errnum) \
-    char error_string[1024]; \
-    strerror_r(errnum, error_string, 1024); \
-    PRINT_WARN_MSG_HEADER << (msg) \
-        << " cause:\"" << error_string << "\"" << NEWLINE
+#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE
+  /* XSI-compliant version of strerror_r() */
+  #define PRINT_WARN_MSG_AND_ERRNO(msg, errnum) \
+      char error_string[1024]; \
+      strerror_r(errnum, error_string, 1024); \
+      PRINT_WARN_MSG_HEADER << (msg) \
+          << " cause:\"" << error_string << "\"" << NEWLINE
+#else
+  /* GNU-specific version of strerror_r() */
+  #define PRINT_WARN_MSG_AND_ERRNO(msg, errnum) \
+      char error_string[1024]; \
+      PRINT_WARN_MSG_HEADER << (msg) \
+          << " cause:\"" << strerror_r(errnum, error_string, 1024) << "\"" << NEWLINE
+#endif
 
 /* Info message. */