# HG changeset patch # User KUBOTA Yuji # Date 1403433961 -32400 # Node ID 8008ab68f4821e07e9aa89d53052c36644b41824 # Parent b8a514c97fb704a726b15af9410f7efac3890904 Bug 1852: HeapStats 1.1 agent can't output WARM messages correctly when _GNU_SOURCE is enabled. reviewed-by: yasuenag diff -r b8a514c97fb7 -r 8008ab68f482 agent/ChangeLog --- 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 + + * Bug 1852: HeapStats 1.1 agent can't output WARM messages correctly when _GNU_SOURCE is enabled. + 2014-06-20 KUBOTA Yuji * Bug 1849: HeapStats agent should collect systemd-journald information diff -r b8a514c97fb7 -r 8008ab68f482 agent/src/logManager.cpp --- 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. */ diff -r b8a514c97fb7 -r 8008ab68f482 agent/src/util.hpp --- 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. */