Commit 489ab051 authored by Sara Golemon's avatar Sara Golemon

Do an explicit test for XSI strerror_r

Summary: The current #if directive is a laundry list of
"strerror_r defaults to XSI style on these platforms",
and we keep missing some, so let's just do a proper test
and simplify the code directives.

Closes #232

Reviewed By: @paulbiss

Differential Revision: D2208843
parent 913ddf77
...@@ -342,9 +342,7 @@ fbstring errnoStr(int err) { ...@@ -342,9 +342,7 @@ fbstring errnoStr(int err) {
} else { } else {
result.assign(buf); result.assign(buf);
} }
#elif defined(__APPLE__) || defined(__FreeBSD__) ||\ #elif defined(HAVE_XSI_STRERROR_R)
defined(__CYGWIN__) || defined(__ANDROID__) ||\
((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE)
// Using XSI-compatible strerror_r // Using XSI-compatible strerror_r
int r = strerror_r(err, buf, sizeof(buf)); int r = strerror_r(err, buf, sizeof(buf));
......
...@@ -346,6 +346,28 @@ if test "$folly_cv_prog_cc_pthread_atfork" = "yes"; then ...@@ -346,6 +346,28 @@ if test "$folly_cv_prog_cc_pthread_atfork" = "yes"; then
AC_DEFINE([HAVE_PTHREAD_ATFORK], [1], [Define to 1 if the compiler supports pthread_atfork]) AC_DEFINE([HAVE_PTHREAD_ATFORK], [1], [Define to 1 if the compiler supports pthread_atfork])
fi fi
# Check for XSI-compatible strerror_r as default implementation
AC_CACHE_CHECK(
[for XSI style strerror_r support],
[folly_cv_prog_cc_xsi_strerror_r],
[AC_RUN_IFELSE(
[AC_LANG_SOURCE[
#include <string.h>
#include <errno.h>
int main(int argc, char** argv) {
char buf[1024];
buf[0] = 0;
int ret = strerror_r(ENOMEM, buf, sizeof(buf));
return ret;
}
]],
[folly_cv_prog_cc_xsi_strerror_r=yes],
[folly_cv_prog_cc_xsi_strerror_r=no])])
if test "$folly_cv_prog_cc_xsi_strerror_r" = "yes"; then
AC_DEFINE([HAVE_XSI_STRERROR_R], [1], [Define to 1 if the runtime supports XSI-style strerror_r])
fi
# Checks for library functions. # Checks for library functions.
AC_CHECK_FUNCS([getdelim \ AC_CHECK_FUNCS([getdelim \
gettimeofday \ gettimeofday \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment