diff options
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | src/strerror.c | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index a6526a9..d56f4c1 100644 --- a/configure.ac +++ b/configure.ac @@ -194,6 +194,9 @@ AC_CHECK_HEADERS([stdlib.h locale.h stdint.h sys/select.h sys/time.h \ AC_FUNC_STRERROR_R case "${host_os}" in + mingw32*) + AC_CHECK_FUNC([strerror_s]) + ;; solaris*) # All versions of Solaris from 2.4 have a thread-safe strerror(). # Since Solaris 10, in addition strerror_r() exists. diff --git a/src/strerror.c b/src/strerror.c index b0efb3d..4cce17f 100644 --- a/src/strerror.c +++ b/src/strerror.c @@ -96,8 +96,16 @@ system_strerror_r (int no, char *buf, size_t buflen) } #endif /* STRERROR_R_CHAR_P */ +#elif defined (HAVE_STRERROR_S) +/* Now the Windows version. */ -#else /* HAVE_STRERROR_H */ +static int +system_strerror_r (int no, char *buf, size_t buflen) +{ + return strerror_s (buf, buflen, no); +} + +#else /* ! HAVE_STRERROR_R && ! HAVE_STRERROR_S */ /* Without strerror_r(), we can still provide a non-thread-safe version. Maybe we are even lucky and the system's strerror() is already thread-safe. */ |