diff options
-rw-r--r-- | acinclude.m4 | 11 | ||||
-rw-r--r-- | lib/strerror.c | 9 |
2 files changed, 20 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 3bfb11246..a582a4eec 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -396,6 +396,17 @@ AC_DEFUN([CURL_CHECK_STRERROR_R], AC_MSG_RESULT(no))])]) if test "x$strerror_r" = "xyes"; then + + dnl check if strerror_r is properly declared in the headers + AC_CHECK_DECL(strerror_r, , + AC_DEFINE(HAVE_NO_STRERROR_R_DECL, 1, [we have no strerror_r() proto]) +, +[#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <errno.h> +]) + dnl determine if this strerror_r() is glibc or POSIX AC_MSG_CHECKING([for a glibc strerror_r API]) AC_TRY_RUN([ diff --git a/lib/strerror.c b/lib/strerror.c index 6cc87091b..d5c80d1a6 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -32,6 +32,15 @@ #define _MPRINTF_REPLACE /* use our functions only */ #include <curl/mprintf.h> +#ifdef HAVE_NO_STRERROR_R_DECL +#ifdef HAVE_POSIX_STRERROR_R +/* seen on AIX 5100-02 gcc 2.9 */ +extern int strerror_r(int errnum, char *strerrbuf, size_t buflen); +#else +extern char *strerror_r(int errnum, char *buf, size_t buflen); +#endif +#endif + const char * curl_easy_strerror(CURLcode error) { |