2011/8/28 Paolo Carlini <paolo.carl...@oracle.com>:
> Sorry,:
>>
>> Once more, I don't understand: didn't you suggest changing *only* ENOSPC
>> and EPERM? Why are we now discussing other error-numbers like ECHILD,
>> EAFNOSUPPORT and EBADMSG? Are the latter defined in errno.h?
>
> should have written:
>
> Once more, I don't understand: didn't you suggest changing *only* ECHILD,
> ENOSPC and EPERM? Why are we now discussing other error-numbers like
> EAFNOSUPPORT and EBADMSG? Are the former defined in errno.h?
>
> Paolo.

Hi,

So I altered the patch in the way you were suggesting. I verfied
values supported in more
detail and found that some other error-values should be handled for
mingw host, too.
The feared clash for E2BIG and EOVERFLOW doesn't happen, so I enabled
them, too.  Additionally
in combination with winpthread, there are error-values ETIMEDOUT,
ENOTSUP, and EWOULDBLOCK present.

ChangeLog

2011-08-28  Kai Tietz  <kti...@redhat.com>

        * configure: Regenerated.
        * config.h.in: Regenerated.
        * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR)  Add
        checks for ECHILD, ENOSPC, EPERM, ETIMEDOUT, and
        EWOULDBLOCK.
        *  config/os/mingw32/error_constants.h (errc): Add
        enumerator values no_child_process, no_space_on_device,
        not_supported, operation_not_permitted, operation_would_block,
        timed_out, and value_too_large,

Regression tested for x86_64-w64-mingw32 and i686-w64-mingw32.  Ok for apply?

Regards,
Kai

Index: configure
===================================================================
--- configure   (revision 178145)
+++ configure   (working copy)
@@ -17650,9 +17650,174 @@
 $as_echo "#define HAVE_ETXTBSY 1" >>confdefs.h

 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECHILD" >&5
+$as_echo_n "checking for ECHILD... " >&6; }
+if test "${glibcxx_cv_system_error15+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else

+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ECHILD;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error15=yes
+else
+  glibcxx_cv_system_error15=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

+fi

+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$glibcxx_cv_system_error15" >&5
+$as_echo "$glibcxx_cv_system_error15" >&6; }
+if test x"$glibcxx_cv_system_error15" = x"yes"; then
+
+$as_echo "#define HAVE_ECHILD 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOSPC" >&5
+$as_echo_n "checking for ENOSPC... " >&6; }
+if test "${glibcxx_cv_system_error16+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ENOSPC;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error16=yes
+else
+  glibcxx_cv_system_error16=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$glibcxx_cv_system_error16" >&5
+$as_echo "$glibcxx_cv_system_error16" >&6; }
+if test x"$glibcxx_cv_system_error16" = x"yes"; then
+
+$as_echo "#define HAVE_ENOSPC 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EPERM" >&5
+$as_echo_n "checking for EPERM... " >&6; }
+if test "${glibcxx_cv_system_error17+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EPERM;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error17=yes
+else
+  glibcxx_cv_system_error17=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$glibcxx_cv_system_error17" >&5
+$as_echo "$glibcxx_cv_system_error17" >&6; }
+if test x"$glibcxx_cv_system_error17" = x"yes"; then
+
+$as_echo "#define HAVE_EPERM 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ETIMEDOUT" >&5
+$as_echo_n "checking for ETIMEDOUT... " >&6; }
+if test "${glibcxx_cv_system_error18+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = ETIMEDOUT;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error18=yes
+else
+  glibcxx_cv_system_error18=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$glibcxx_cv_system_error18" >&5
+$as_echo "$glibcxx_cv_system_error18" >&6; }
+if test x"$glibcxx_cv_system_error18" = x"yes"; then
+
+$as_echo "#define HAVE_ETIMEDOUT 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EWOULDBLOCK" >&5
+$as_echo_n "checking for EWOULDBLOCK... " >&6; }
+if test "${glibcxx_cv_system_error19+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+int
+main ()
+{
+int i = EWOULDBLOCK;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  glibcxx_cv_system_error19=yes
+else
+  glibcxx_cv_system_error19=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$glibcxx_cv_system_error19" >&5
+$as_echo "$glibcxx_cv_system_error19" >&6; }
+if test x"$glibcxx_cv_system_error19" = x"yes"; then
+
+$as_echo "#define HAVE_EWOULDBLOCK 1" >>confdefs.h
+
+fi
+
+
+
 # For the streamoff typedef.


Index: config.h.in
===================================================================
--- config.h.in (revision 178145)
+++ config.h.in (working copy)
@@ -60,6 +60,9 @@
 /* Define if ECANCELED exists. */
 #undef HAVE_ECANCELED

+/* Define if ECHILD exists. */
+#undef HAVE_ECHILD
+
 /* Define if EIDRM exists. */
 #undef HAVE_EIDRM

@@ -72,6 +75,9 @@
 /* Define if ENOLINK exists. */
 #undef HAVE_ENOLINK

+/* Define if ENOSPC exists. */
+#undef HAVE_ENOSPC
+
 /* Define if ENOSR exists. */
 #undef HAVE_ENOSR

@@ -90,15 +96,24 @@
 /* Define if EOWNERDEAD exists. */
 #undef HAVE_EOWNERDEAD

+/* Define if EPERM exists. */
+#undef HAVE_EPERM
+
 /* Define if EPROTO exists. */
 #undef HAVE_EPROTO

 /* Define if ETIME exists. */
 #undef HAVE_ETIME

+/* Define if ETIMEDOUT exists. */
+#undef HAVE_ETIMEDOUT
+
 /* Define if ETXTBSY exists. */
 #undef HAVE_ETXTBSY

+/* Define if EWOULDBLOCK exists. */
+#undef HAVE_EWOULDBLOCK
+
 /* Define to 1 if you have the <execinfo.h> header file. */
 #undef HAVE_EXECINFO_H

Index: config/os/mingw32/error_constants.h
===================================================================
--- config/os/mingw32/error_constants.h (revision 178145)
+++ config/os/mingw32/error_constants.h (working copy)
@@ -79,13 +79,17 @@
 //    network_reset =                          ENETRESET,
 //    network_unreachable =                    ENETUNREACH,
 //    no_buffer_space =                        ENOBUFS,
-//    no_child_process =                       ECHILD,
+#ifdef HAVE_ECHILD
+      no_child_process =                       ECHILD,
+#endif
 //    no_link =                                ENOLINK,
       no_lock_available =                      ENOLCK,
 //    no_message_available =                   ENODATA,
 //    no_message =                             ENOMSG,
 //    no_protocol_option =                     ENOPROTOOPT,
-//    no_space_on_device =                     ENOSPC,
+#ifdef HAVE_ENOSPC
+      no_space_on_device =                     ENOSPC,
+#endif
 //    no_stream_resources =                    ENOSR,
       no_such_device_or_address =              ENXIO,
       no_such_device =                                 ENODEV,
@@ -96,12 +100,18 @@
 //    not_a_stream =                           ENOSTR,
 //    not_connected =                          ENOTCONN,
       not_enough_memory =                      ENOMEM,
-//    not_supported =                          ENOTSUP,
+#ifdef HAVE_ENOTSUP
+      not_supported =                          ENOTSUP,
+#endif
 //    operation_canceled =                     ECANCELED,
 //    operation_in_progress =                  EINPROGRESS,
-//    operation_not_permitted =                EPERM,
+#ifdef HAVE_EPERM
+      operation_not_permitted =                EPERM,
+#endif
 //    operation_not_supported =                EOPNOTSUPP,
-//    operation_would_block =                  EWOULDBLOCK,
+#ifdef EWOULDBLOCK
+      operation_would_block =                  EWOULDBLOCK,
+#endif
 //    owner_dead =                             EOWNERDEAD,
       permission_denied =                      EACCES,
 //    protocol_error =                                 EPROTO,
@@ -113,12 +123,16 @@
 //    state_not_recoverable =                  ENOTRECOVERABLE,
 //    stream_timeout =                                 ETIME,
 //    text_file_busy =                                 ETXTBSY,
-//    timed_out =                              ETIMEDOUT,
+#ifdef ETIMEDOUT
+      timed_out =                              ETIMEDOUT,
+#endif
       too_many_files_open_in_system =          ENFILE,
       too_many_files_open =                    EMFILE,
       too_many_links =                                 EMLINK
  //   too_many_symbolic_link_levels =          ELOOP,
- //   value_too_large =                        EOVERFLOW,
+#ifdef HAVE_EOVERFLOW
+      value_too_large =                        EOVERFLOW,
+#endif
  //   wrong_protocol_type =                    EPROTOTYPE
    };

Index: acinclude.m4
===================================================================
--- acinclude.m4        (revision 178145)
+++ acinclude.m4        (working copy)
@@ -1700,7 +1700,9 @@
 m4_pushdef([n_syserr], [1])dnl
 m4_foreach([syserr], [EOWNERDEAD, ENOTRECOVERABLE, ENOLINK, EPROTO, ENODATA,
                      ENOSR, ENOSTR, ETIME, EBADMSG, ECANCELED,
-                     EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY],
+                     EOVERFLOW, ENOTSUP, EIDRM, ETXTBSY,
+                     ECHILD, ENOSPC, EPERM,
+                     ETIMEDOUT, EWOULDBLOCK],
 [m4_pushdef([SYSERR], m4_toupper(syserr))dnl
 AC_MSG_CHECKING([for syserr])
 AC_CACHE_VAL([glibcxx_cv_system_error[]n_syserr], [

Reply via email to