bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: strerror_r on mingw


From: Bruno Haible
Subject: Re: strerror_r on mingw
Date: Thu, 19 May 2011 20:46:24 +0200
User-agent: KMail/1.9.9

> 2011-05-18  Bruno Haible  <address@hidden>
> 
>       strerror_r: Avoid clobbering the strerror buffer when possible.
>       * lib/strerror_r.c (strerror_r): Merge the three implementations.
>       Handle gnulib defined errno values here. When strerror() returns NULL
>       or an empty string, return EINVAL.
>       * lib/strerror.c (strerror): Always call strerror_r. Don't handle
>       gnulib defined errno values here.
>       * modules/strerror (Depends-on): Add verify, strerror_r-posix.

Oops, this led to a test failure on mingw. EXTEND_STRERROR_R was not defined
on mingw, because the function strerror_r does not exist there in the first
place. This should be more reliable:


2011-05-19  Bruno Haible  <address@hidden>

        strerror_r: Fix test failure on mingw.
        * m4/strerror_r.m4 (gl_FUNC_STRERROR_R): Don't define
        EXTEND_STRERROR_R.
        * lib/strerror_r.c (strerror_r): Test the various GNULIB_defined_*
        macros from errno.in.h instead.

--- m4/strerror_r.m4.orig       Thu May 19 20:39:58 2011
+++ m4/strerror_r.m4    Thu May 19 20:39:16 2011
@@ -1,4 +1,4 @@
-# strerror_r.m4 serial 4
+# strerror_r.m4 serial 5
 dnl Copyright (C) 2002, 2007-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -93,9 +93,6 @@
       dnl The system's strerror_r() cannot know about the new errno values we
       dnl add to <errno.h>. Replace it.
       REPLACE_STRERROR_R=1
-      AC_DEFINE([EXTEND_STRERROR_R], [1],
-        [Define to 1 if strerror_r needs to be extended so that it handles the
-         extra errno values.])
     fi
   fi
   if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
--- lib/strerror_r.c.orig       Thu May 19 20:39:58 2011
+++ lib/strerror_r.c    Thu May 19 20:38:31 2011
@@ -64,7 +64,19 @@
 strerror_r (int errnum, char *buf, size_t buflen)
 #undef strerror_r
 {
-#if EXTEND_STRERROR_R
+#if GNULIB_defined_ETXTBSY \
+    || GNULIB_defined_ESOCK \
+    || GNULIB_defined_ENOMSG \
+    || GNULIB_defined_EIDRM \
+    || GNULIB_defined_ENOLINK \
+    || GNULIB_defined_EPROTO \
+    || GNULIB_defined_EMULTIHOP \
+    || GNULIB_defined_EBADMSG \
+    || GNULIB_defined_EOVERFLOW \
+    || GNULIB_defined_ENOTSUP \
+    || GNULIB_defined_ESTALE \
+    || GNULIB_defined_EDQUOT \
+    || GNULIB_defined_ECANCELED
   {
     char const *msg = NULL;
     /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */

-- 
In memoriam Anne Boleyn <http://en.wikipedia.org/wiki/Anne_Boleyn>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]