diff --git a/configure.ac b/configure.ac index df9131060d..a6414c6b4f 100644 --- a/configure.ac +++ b/configure.ac @@ -650,6 +650,7 @@ pause \ AC_FUNC_ALLOCA AC_FUNC_MMAP +AC_FUNC_STRERROR_R EFL_CHECK_FUNCS([EFLALL], [fnmatch gettimeofday dirfd fcntl sched_getcpu]) diff --git a/src/lib/eina/eina_error.c b/src/lib/eina/eina_error.c index 85cf708502..3e09f070cd 100644 --- a/src/lib/eina/eina_error.c +++ b/src/lib/eina/eina_error.c @@ -312,16 +312,17 @@ eina_error_msg_get(Eina_Error error) if (!msg) { char buf[256] = ""; - const char *str; + const char *str = NULL; -#if (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE +#ifdef HAVE_STRERROR_R +# ifndef STRERROR_R_CHAR_P if (strerror_r(error, buf, sizeof(buf)) == 0) /* XSI */ str = buf; - else - str = NULL; -#else +# else /* STRERROR_R_CHAR_P */ str = strerror_r(error, buf, sizeof(buf)); /* GNU */ -#endif +# endif /* ! STRERROR_R_CHAR_P */ +#endif /* HAVE_STRERROR_R */ + if (!str) EINA_SAFETY_ERROR("strerror_r() failed"); else