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) {
} else {
result.assign(buf);
}
#elif defined(__APPLE__) || defined(__FreeBSD__) ||\
defined(__CYGWIN__) || defined(__ANDROID__) ||\
((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE)
#elif defined(HAVE_XSI_STRERROR_R)
// Using XSI-compatible strerror_r
int r = strerror_r(err, buf, sizeof(buf));
......
......@@ -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])
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.
AC_CHECK_FUNCS([getdelim \
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