aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac3
-rw-r--r--src/strerror.c10
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. */