strerror_r: fix on newer cygwin
authorEric Blake <eblake@redhat.com>
Thu, 19 May 2011 18:51:36 +0000 (12:51 -0600)
committerEric Blake <eblake@redhat.com>
Thu, 19 May 2011 19:16:19 +0000 (13:16 -0600)
* lib/strerror_r.c (rpl_strerror_r): Cygwin now has
__xpg_strerror_r, use it.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
lib/strerror_r.c

index 4e22ecba26f155a58215594865802d958f3c5cdd..f5e455b44fe0117a097c3c05ca3c0ac13e3ada04 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-19  Eric Blake  <eblake@redhat.com>
+
+       strerror_r: fix on newer cygwin
+       * lib/strerror_r.c (rpl_strerror_r): Cygwin now has
+       __xpg_strerror_r, use it.
+
 2011-05-19  Bruno Haible  <bruno@clisp.org>
 
        strerror_r: Avoid clobbering the strerror buffer when possible.
index c4aa5d9d14f98d1e6c15362d7af7b5a0fe638098..fe1185ba4e06b03877ca86f8a331aa496e56b93a 100644 (file)
 # endif
 
 
-#if HAVE_DECL_STRERROR_R && !(__GLIBC__ >= 2 || defined __UCLIBC__)
+#if (__GLIBC__ >= 2 || defined __UCLIBC__ || defined __CYGWIN__) && HAVE___XPG_STRERROR_R /* glibc >= 2.3.4, cygwin >= 1.7.9 */
+
+# define USE_XPG_STRERROR_R 1
+
+#elif HAVE_DECL_STRERROR_R && !(__GLIBC__ >= 2 || defined __UCLIBC__)
 
 /* The system's strerror_r function is OK, except that its third argument
    is 'int', not 'size_t', or its return type is wrong.  */
 
 # define USE_SYSTEM_STRERROR_R 1
 
-#elif (__GLIBC__ >= 2 || defined __UCLIBC__) && HAVE___XPG_STRERROR_R /* glibc >= 2.3.4 */
-
-# define USE_XPG_STRERROR_R 1
-
 #else /* (__GLIBC__ >= 2 || defined __UCLIBC__ ? !HAVE___XPG_STRERROR_R : !HAVE_DECL_STRERROR_R) */
 
 /* Use the system's strerror().  */
@@ -446,7 +446,7 @@ strerror_r (int errnum, char *buf, size_t buflen)
         ret = strerror_r (errnum, buf, buflen);
     }
 # elif defined __CYGWIN__
-    /* Cygwin only provides the glibc interface, is thread-safe, and
+    /* Cygwin 1.7.8 only provides the glibc interface, is thread-safe, and
        always succeeds (although it may truncate). */
     strerror_r (errnum, buf, buflen);
     ret = 0;