]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gnulib: import nonblocking module
authorMike Frysinger <vapier@gentoo.org>
Tue, 8 Jun 2021 21:52:28 +0000 (17:52 -0400)
committerMike Frysinger <vapier@gentoo.org>
Mon, 1 Jan 2024 23:23:28 +0000 (18:23 -0500)
This provides a portable API for managing O_NONBLOCK settings.
The sim will use this to replace its own incomplete shims.

17 files changed:
gnulib/Makefile.in
gnulib/aclocal.m4
gnulib/config.in
gnulib/configure
gnulib/import/Makefile.am
gnulib/import/Makefile.in
gnulib/import/ioctl.c [new file with mode: 0644]
gnulib/import/m4/asm-underscore.m4 [new file with mode: 0644]
gnulib/import/m4/gnulib-cache.m4
gnulib/import/m4/gnulib-comp.m4
gnulib/import/m4/ioctl.m4 [new file with mode: 0644]
gnulib/import/m4/nonblocking.m4 [new file with mode: 0644]
gnulib/import/m4/sys_ioctl_h.m4 [new file with mode: 0644]
gnulib/import/nonblocking.c [new file with mode: 0644]
gnulib/import/nonblocking.h [new file with mode: 0644]
gnulib/import/sys_ioctl.in.h [new file with mode: 0644]
gnulib/update-gnulib.sh

index 02886fe877a6e545760b2cb184d45e1647a16a78..b1946cb690b572bd9279b165188bb8302a15f4e4 100644 (file)
@@ -112,6 +112,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/absolute-header.m4 \
        $(top_srcdir)/import/m4/alloca.m4 \
        $(top_srcdir)/import/m4/arpa_inet_h.m4 \
+       $(top_srcdir)/import/m4/asm-underscore.m4 \
        $(top_srcdir)/import/m4/btowc.m4 \
        $(top_srcdir)/import/m4/builtin-expect.m4 \
        $(top_srcdir)/import/m4/canonicalize.m4 \
@@ -171,6 +172,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/include_next.m4 \
        $(top_srcdir)/import/m4/inet_ntop.m4 \
        $(top_srcdir)/import/m4/inttypes.m4 \
+       $(top_srcdir)/import/m4/ioctl.m4 \
        $(top_srcdir)/import/m4/isblank.m4 \
        $(top_srcdir)/import/m4/isnand.m4 \
        $(top_srcdir)/import/m4/isnanl.m4 \
@@ -207,6 +209,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/netdb_h.m4 \
        $(top_srcdir)/import/m4/netinet_in_h.m4 \
        $(top_srcdir)/import/m4/nocrash.m4 \
+       $(top_srcdir)/import/m4/nonblocking.m4 \
        $(top_srcdir)/import/m4/off_t.m4 \
        $(top_srcdir)/import/m4/open-cloexec.m4 \
        $(top_srcdir)/import/m4/open-slash.m4 \
@@ -252,6 +255,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/strnlen.m4 \
        $(top_srcdir)/import/m4/strstr.m4 \
        $(top_srcdir)/import/m4/strtok_r.m4 \
+       $(top_srcdir)/import/m4/sys_ioctl_h.m4 \
        $(top_srcdir)/import/m4/sys_random_h.m4 \
        $(top_srcdir)/import/m4/sys_select_h.m4 \
        $(top_srcdir)/import/m4/sys_socket_h.m4 \
@@ -357,6 +361,7 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
 AR = @AR@
 ARFLAGS = @ARFLAGS@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -546,6 +551,7 @@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@
 GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@
 GL_GNULIB_INET_NTOP = @GL_GNULIB_INET_NTOP@
 GL_GNULIB_INET_PTON = @GL_GNULIB_INET_PTON@
+GL_GNULIB_IOCTL = @GL_GNULIB_IOCTL@
 GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@
 GL_GNULIB_ISBLANK = @GL_GNULIB_ISBLANK@
 GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@
@@ -1183,6 +1189,7 @@ HAVE_SYMLINK = @HAVE_SYMLINK@
 HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
 HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
 HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_IOCTL_H = @HAVE_SYS_IOCTL_H@
 HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@
@@ -1320,6 +1327,7 @@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
 NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
 NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
 NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@
 NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@
 NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@
 NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
@@ -1352,6 +1360,7 @@ NEXT_STDIO_H = @NEXT_STDIO_H@
 NEXT_STDLIB_H = @NEXT_STDLIB_H@
 NEXT_STRINGS_H = @NEXT_STRINGS_H@
 NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_IOCTL_H = @NEXT_SYS_IOCTL_H@
 NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@
 NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@
 NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@
@@ -1486,6 +1495,7 @@ REPLACE_ILOGBL = @REPLACE_ILOGBL@
 REPLACE_INET_NTOP = @REPLACE_INET_NTOP@
 REPLACE_INET_PTON = @REPLACE_INET_PTON@
 REPLACE_INITSTATE = @REPLACE_INITSTATE@
+REPLACE_IOCTL = @REPLACE_IOCTL@
 REPLACE_ISATTY = @REPLACE_ISATTY@
 REPLACE_ISFINITE = @REPLACE_ISFINITE@
 REPLACE_ISINF = @REPLACE_ISINF@
@@ -1664,6 +1674,8 @@ STDBOOL_H = @STDBOOL_H@
 STDDEF_H = @STDDEF_H@
 STDINT_H = @STDINT_H@
 STRIP = @STRIP@
+SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@
+SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
 TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
 TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@
index c7f866eb8bffd28ec5ac8fd77af495ce439d0271..7ba3475ed95857f2639590d155bd7836e4e9865c 100644 (file)
@@ -1174,6 +1174,7 @@ m4_include([import/m4/__inline.m4])
 m4_include([import/m4/absolute-header.m4])
 m4_include([import/m4/alloca.m4])
 m4_include([import/m4/arpa_inet_h.m4])
+m4_include([import/m4/asm-underscore.m4])
 m4_include([import/m4/btowc.m4])
 m4_include([import/m4/builtin-expect.m4])
 m4_include([import/m4/canonicalize.m4])
@@ -1234,6 +1235,7 @@ m4_include([import/m4/gnulib-comp.m4])
 m4_include([import/m4/include_next.m4])
 m4_include([import/m4/inet_ntop.m4])
 m4_include([import/m4/inttypes.m4])
+m4_include([import/m4/ioctl.m4])
 m4_include([import/m4/isblank.m4])
 m4_include([import/m4/isnand.m4])
 m4_include([import/m4/isnanl.m4])
@@ -1270,6 +1272,7 @@ m4_include([import/m4/multiarch.m4])
 m4_include([import/m4/netdb_h.m4])
 m4_include([import/m4/netinet_in_h.m4])
 m4_include([import/m4/nocrash.m4])
+m4_include([import/m4/nonblocking.m4])
 m4_include([import/m4/off_t.m4])
 m4_include([import/m4/open-cloexec.m4])
 m4_include([import/m4/open-slash.m4])
@@ -1315,6 +1318,7 @@ m4_include([import/m4/strings_h.m4])
 m4_include([import/m4/strnlen.m4])
 m4_include([import/m4/strstr.m4])
 m4_include([import/m4/strtok_r.m4])
+m4_include([import/m4/sys_ioctl_h.m4])
 m4_include([import/m4/sys_random_h.m4])
 m4_include([import/m4/sys_select_h.m4])
 m4_include([import/m4/sys_socket_h.m4])
index f70c6a52b433213893173a7202b19f2ca9a5b468..37ad898e004ed631c44032938404e77750bd00fa 100644 (file)
    whether the gnulib module msvc-nothrow shall be considered present. */
 #undef GNULIB_MSVC_NOTHROW
 
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module nonblocking shall be considered present. */
+#undef GNULIB_NONBLOCKING
+
 /* Define to a C preprocessor expression that evaluates to 1 or 0, depending
    whether the gnulib module openat shall be considered present. */
 #undef GNULIB_OPENAT
 /* Define to 1 when the gnulib module glob should be tested. */
 #undef GNULIB_TEST_GLOB
 
+/* Define to 1 when the gnulib module ioctl should be tested. */
+#undef GNULIB_TEST_IOCTL
+
 /* Define to 1 when the gnulib module listen should be tested. */
 #undef GNULIB_TEST_LISTEN
 
 /* Define to 1 when the gnulib module mkostemp should be tested. */
 #undef GNULIB_TEST_MKOSTEMP
 
+/* Define to 1 when the gnulib module nonblocking should be tested. */
+#undef GNULIB_TEST_NONBLOCKING
+
 /* Define to 1 when the gnulib module open should be tested. */
 #undef GNULIB_TEST_OPEN
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if you have the `ioctl' function. */
+#undef HAVE_IOCTL
+
 /* Define to 1 if <sys/socket.h> defines AF_INET. */
 #undef HAVE_IPV4
 
 /* Define to 1 if you have the <sys/inttypes.h> header file. */
 #undef HAVE_SYS_INTTYPES_H
 
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
 /* Define to 1 if you have the <sys/mman.h> header file. */
 #undef HAVE_SYS_MMAN_H
 
    timespec. */
 #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
 
+/* Define to the prefix of C symbols at the assembler and linker level, either
+   an underscore or empty. */
+#undef USER_LABEL_PREFIX
+
 /* Define if the combination of the ISO C and POSIX multithreading APIs can be
    used. */
 #undef USE_ISOC_AND_POSIX_THREADS
index cb2a11359a195eab5bed7473e680c1bd9f2379e1..9626c429d2d9ec24acac70f7d27e112256c2b4fc 100755 (executable)
@@ -769,6 +769,9 @@ NEXT_SYS_TYPES_H
 HAVE_SYS_RANDOM_H
 NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H
 NEXT_SYS_RANDOM_H
+NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H
+NEXT_SYS_IOCTL_H
+HAVE_SYS_IOCTL_H
 GL_COND_OBJ_STRTOK_R_FALSE
 GL_COND_OBJ_STRTOK_R_TRUE
 GL_COND_OBJ_STRNLEN_FALSE
@@ -867,6 +870,7 @@ GL_COND_OBJ_OPENAT_FALSE
 GL_COND_OBJ_OPENAT_TRUE
 GL_COND_OBJ_OPEN_FALSE
 GL_COND_OBJ_OPEN_TRUE
+ASM_SYMBOL_PREFIX
 GL_GENERATE_NETINET_IN_H_FALSE
 GL_GENERATE_NETINET_IN_H_TRUE
 NETINET_IN_H
@@ -1038,6 +1042,9 @@ GL_GENERATE_LIMITS_H_TRUE
 LIMITS_H
 GL_COND_OBJ_ISBLANK_FALSE
 GL_COND_OBJ_ISBLANK_TRUE
+GL_GNULIB_IOCTL
+GL_COND_OBJ_IOCTL_FALSE
+GL_COND_OBJ_IOCTL_TRUE
 GL_GNULIB_STRTOUMAX
 GL_GNULIB_STRTOIMAX
 GL_GNULIB_IMAXDIV
@@ -2032,6 +2039,9 @@ GL_GNULIB_SOCKET
 GL_COND_OBJ_ACCEPT_FALSE
 GL_COND_OBJ_ACCEPT_TRUE
 HAVE_WINSOCK2_H
+REPLACE_IOCTL
+SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS
+SYS_IOCTL_H_HAVE_WINSOCK2_H
 UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS
 UNISTD_H_HAVE_WINSOCK2_H
 UNISTD_H_HAVE_SYS_RANDOM_H
@@ -3997,6 +4007,7 @@ as_fn_append ac_func_list " __xpg_strerror_r"
 as_fn_append ac_func_list " catgets"
 as_fn_append ac_func_list " snprintf"
 as_fn_append ac_header_list " strings.h"
+as_fn_append ac_header_list " sys/ioctl.h"
 as_fn_append ac_header_list " sys/random.h"
 as_fn_append ac_header_list " sys/uio.h"
 as_fn_append ac_header_list " sys/wait.h"
@@ -7103,6 +7114,7 @@ fi
   # Code from module intprops:
   # Code from module inttypes:
   # Code from module inttypes-incomplete:
+  # Code from module ioctl:
   # Code from module isblank:
   # Code from module isnand-nolibm:
   # Code from module isnanl-nolibm:
@@ -7138,6 +7150,7 @@ fi
   # Code from module netdb:
   # Code from module netinet_in:
   # Code from module nocrash:
+  # Code from module nonblocking:
   # Code from module open:
   # Code from module openat:
   # Code from module openat-die:
@@ -7191,6 +7204,7 @@ fi
   # Code from module strstr:
   # Code from module strstr-simple:
   # Code from module strtok_r:
+  # Code from module sys_ioctl:
   # Code from module sys_random:
   # Code from module sys_select:
   # Code from module sys_socket:
@@ -7527,6 +7541,12 @@ $as_echo "$gl_cv_source_line_length_unlimited" >&6; }
   UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
 
 
+
+    SYS_IOCTL_H_HAVE_WINSOCK2_H=0;
+  SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+
+  REPLACE_IOCTL=0;
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
 $as_echo_n "checking for C/C++ restrict keyword... " >&6; }
 if ${ac_cv_c_restrict+:} false; then :
@@ -13813,8 +13833,8 @@ rm -f core conftest.err conftest.$ac_objext \
         LIBS=$save_LIBS
         test $gl_pthread_api = yes && break
       done
-      echo "$as_me:13816: gl_pthread_api=$gl_pthread_api" >&5
-      echo "$as_me:13817: LIBPTHREAD=$LIBPTHREAD" >&5
+      echo "$as_me:13836: gl_pthread_api=$gl_pthread_api" >&5
+      echo "$as_me:13837: LIBPTHREAD=$LIBPTHREAD" >&5
 
       gl_pthread_in_glibc=no
       # On Linux with glibc >= 2.34, libc contains the fully functional
@@ -13839,7 +13859,7 @@ rm -f conftest*
 
           ;;
       esac
-      echo "$as_me:13842: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
+      echo "$as_me:13862: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
 
       # Test for libpthread by looking for pthread_kill. (Not pthread_self,
       # since it is defined as a macro on OSF/1.)
@@ -13993,7 +14013,7 @@ fi
 
         fi
       fi
-      echo "$as_me:13996: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
+      echo "$as_me:14016: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
     fi
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
 $as_echo_n "checking whether POSIX threads API is available... " >&6; }
@@ -15854,6 +15874,12 @@ $as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
 
 
 
+  GL_GNULIB_IOCTL=0
+
+
+
+
+
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5
 $as_echo_n "checking where to find the exponent in a 'double'... " >&6; }
@@ -17070,8 +17096,8 @@ rm -f core conftest.err conftest.$ac_objext \
         LIBS=$save_LIBS
         test $gl_pthread_api = yes && break
       done
-      echo "$as_me:17073: gl_pthread_api=$gl_pthread_api" >&5
-      echo "$as_me:17074: LIBPTHREAD=$LIBPTHREAD" >&5
+      echo "$as_me:17099: gl_pthread_api=$gl_pthread_api" >&5
+      echo "$as_me:17100: LIBPTHREAD=$LIBPTHREAD" >&5
 
       gl_pthread_in_glibc=no
       # On Linux with glibc >= 2.34, libc contains the fully functional
@@ -17096,7 +17122,7 @@ rm -f conftest*
 
           ;;
       esac
-      echo "$as_me:17099: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
+      echo "$as_me:17125: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
 
       # Test for libpthread by looking for pthread_kill. (Not pthread_self,
       # since it is defined as a macro on OSF/1.)
@@ -17250,7 +17276,7 @@ fi
 
         fi
       fi
-      echo "$as_me:17253: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
+      echo "$as_me:17279: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
     fi
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
 $as_echo_n "checking whether POSIX threads API is available... " >&6; }
@@ -17476,8 +17502,8 @@ rm -f core conftest.err conftest.$ac_objext \
         LIBS=$save_LIBS
         test $gl_pthread_api = yes && break
       done
-      echo "$as_me:17479: gl_pthread_api=$gl_pthread_api" >&5
-      echo "$as_me:17480: LIBPTHREAD=$LIBPTHREAD" >&5
+      echo "$as_me:17505: gl_pthread_api=$gl_pthread_api" >&5
+      echo "$as_me:17506: LIBPTHREAD=$LIBPTHREAD" >&5
 
       gl_pthread_in_glibc=no
       # On Linux with glibc >= 2.34, libc contains the fully functional
@@ -17502,7 +17528,7 @@ rm -f conftest*
 
           ;;
       esac
-      echo "$as_me:17505: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
+      echo "$as_me:17531: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
 
       # Test for libpthread by looking for pthread_kill. (Not pthread_self,
       # since it is defined as a macro on OSF/1.)
@@ -17656,7 +17682,7 @@ fi
 
         fi
       fi
-      echo "$as_me:17659: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
+      echo "$as_me:17685: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
     fi
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
 $as_echo_n "checking whether POSIX threads API is available... " >&6; }
@@ -19377,6 +19403,97 @@ $as_echo "$gl_cv_next_netdb_h" >&6; }
 
 
 
+
+  case "$host_os" in
+    mingw*) gl_cv_have_nonblocking=no ;;
+    *)      gl_cv_have_nonblocking=yes ;;
+  esac
+  case "$host_os" in
+    mingw*) gl_cv_have_open_O_NONBLOCK=no ;;
+    *)      gl_cv_have_open_O_NONBLOCK=yes ;;
+  esac
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "MicrosoftCompiler" >/dev/null 2>&1; then :
+            rm -f conftest*
+     echo 'int dummy;' > conftest.c
+     { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null 2>&1
+     if test -f conftest.o; then
+       gl_asmext='s'
+       gl_c_asm_opt='-S'
+     else
+       gl_asmext='asm'
+       gl_c_asm_opt='-c -Fa'
+     fi
+     rm -f conftest*
+
+else
+  gl_asmext='s'
+     gl_c_asm_opt='-S'
+
+fi
+rm -f conftest*
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C symbols are prefixed with underscore at the linker level" >&5
+$as_echo_n "checking whether C symbols are prefixed with underscore at the linker level... " >&6; }
+if ${gl_cv_prog_as_underscore+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" int foo (void);
+#endif
+int foo(void) { return 0; }
+EOF
+     # Look for the assembly language name in the .s file.
+     { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } >/dev/null 2>&1
+     if LC_ALL=C $EGREP '(^|[^a-zA-Z0-9_])_foo([^a-zA-Z0-9_]|$)' conftest.$gl_asmext >/dev/null; then
+       gl_cv_prog_as_underscore=yes
+     else
+       gl_cv_prog_as_underscore=no
+     fi
+     rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_prog_as_underscore" >&5
+$as_echo "$gl_cv_prog_as_underscore" >&6; }
+  if test $gl_cv_prog_as_underscore = yes; then
+    USER_LABEL_PREFIX=_
+  else
+    USER_LABEL_PREFIX=
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define USER_LABEL_PREFIX $USER_LABEL_PREFIX
+_ACEOF
+
+  ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
+
+
+
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for O_CLOEXEC" >&5
 $as_echo_n "checking for O_CLOEXEC... " >&6; }
 if ${gl_cv_macro_O_CLOEXEC+:} false; then :
@@ -20310,6 +20427,20 @@ $as_echo "#define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1" >>confdefs.h
 
 
 
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_STDIO_READ_FUNCS=1
+    fi
+
+
+
+
+
+
+
+    if test $gl_cv_have_nonblocking != yes; then
+      REPLACE_STDIO_WRITE_FUNCS=1
+    fi
+
 
 
 
@@ -20998,6 +21129,127 @@ _ACEOF
 
 
 
+  if test $ac_cv_header_sys_ioctl_h = yes; then
+    HAVE_SYS_IOCTL_H=1
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <sys/ioctl.h> declares ioctl" >&5
+$as_echo_n "checking whether <sys/ioctl.h> declares ioctl... " >&6; }
+if ${gl_cv_decl_ioctl_in_sys_ioctl_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/ioctl.h>
+int
+main ()
+{
+(void) ioctl;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_decl_ioctl_in_sys_ioctl_h=yes
+else
+  gl_cv_decl_ioctl_in_sys_ioctl_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_ioctl_in_sys_ioctl_h" >&5
+$as_echo "$gl_cv_decl_ioctl_in_sys_ioctl_h" >&6; }
+  else
+    HAVE_SYS_IOCTL_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_sys_ioctl_h='<'sys/ioctl.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/ioctl.h>" >&5
+$as_echo_n "checking absolute name of <sys/ioctl.h>... " >&6; }
+if ${gl_cv_next_sys_ioctl_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+             if test $ac_cv_header_sys_ioctl_h = yes; then
+
+
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/ioctl.h>
+_ACEOF
+                case "$host_os" in
+    aix*) gl_absname_cpp="$ac_cpp -C" ;;
+    *)    gl_absname_cpp="$ac_cpp" ;;
+  esac
+
+  case "$host_os" in
+    mingw*)
+                                          gl_dirsep_regex='[/\\]'
+      ;;
+    *)
+      gl_dirsep_regex='\/'
+      ;;
+  esac
+      gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+  gl_header_literal_regex=`echo 'sys/ioctl.h' \
+                           | sed -e "$gl_make_literal_regex_sed"`
+  gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+      s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+      s|^/[^/]|//&|
+      p
+      q
+    }'
+
+        gl_cv_absolute_sys_ioctl_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+  sed -n "$gl_absolute_header_sed"`
+
+          gl_header=$gl_cv_absolute_sys_ioctl_h
+          gl_cv_next_sys_ioctl_h='"'$gl_header'"'
+          else
+               gl_cv_next_sys_ioctl_h='<'sys/ioctl.h'>'
+             fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_ioctl_h" >&5
+$as_echo "$gl_cv_next_sys_ioctl_h" >&6; }
+     fi
+     NEXT_SYS_IOCTL_H=$gl_cv_next_sys_ioctl_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'sys/ioctl.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_sys_ioctl_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
 
 
 
+  HAVE_IOCTL=1
+  if test "$ac_cv_header_winsock2_h" = yes; then
+                HAVE_IOCTL=0
+  else
+    for ac_func in ioctl
+do :
+  ac_fn_c_check_func "$LINENO" "ioctl" "ac_cv_func_ioctl"
+if test "x$ac_cv_func_ioctl" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_IOCTL 1
+_ACEOF
+
+fi
+done
+
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ioctl with POSIX signature" >&5
+$as_echo_n "checking for ioctl with POSIX signature... " >&6; }
+if ${gl_cv_func_ioctl_posix_signature+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/ioctl.h>
+              /* On some platforms, ioctl() is declared in <unistd.h>.  */
+              #include <unistd.h>
+
+int
+main ()
+{
+extern
+              #ifdef __cplusplus
+              "C"
+              #endif
+              int ioctl (int, int, ...);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_func_ioctl_posix_signature=yes
+else
+  gl_cv_func_ioctl_posix_signature=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ioctl_posix_signature" >&5
+$as_echo "$gl_cv_func_ioctl_posix_signature" >&6; }
+    if test $gl_cv_func_ioctl_posix_signature != yes; then
+      REPLACE_IOCTL=1
+    fi
+  fi
+
+
+     if test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1; then
+  GL_COND_OBJ_IOCTL_TRUE=
+  GL_COND_OBJ_IOCTL_FALSE='#'
+else
+  GL_COND_OBJ_IOCTL_TRUE='#'
+  GL_COND_OBJ_IOCTL_FALSE=
+fi
+:
+    if test -z "${GL_COND_OBJ_IOCTL_TRUE}" && test -z "${GL_COND_OBJ_IOCTL_FALSE}"; then
+    GL_COND_OBJ_IOCTL_TRUE='#'
+    GL_COND_OBJ_IOCTL_FALSE='#'
+  fi
+
+
+
+
+
+
+
+
+
+
+          GL_GNULIB_IOCTL=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_IOCTL 1" >>confdefs.h
+
+
+
+
+
+
 
 
   if test $ac_cv_func_isblank = no; then
 
 
 
+
+
+
+
+
+
+
+
+
+          GL_GNULIB_NONBLOCKING=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_NONBLOCKING 1" >>confdefs.h
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_NONBLOCKING 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+  GL_GNULIB_STDIO_H_NONBLOCKING=1
+
+
+
+
+
+
+
+
+  GL_GNULIB_UNISTD_H_NONBLOCKING=1
+
+
+
+
+
   case "$host_os" in
     mingw* | pw*)
       REPLACE_OPEN=1
@@ -31202,6 +31593,15 @@ $as_echo "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h
     fi
 
 
+    if test $REPLACE_OPEN = 0; then
+
+
+
+      if test $gl_cv_have_open_O_NONBLOCK != yes; then
+        REPLACE_OPEN=1
+      fi
+    fi
+
 
 
      if test $REPLACE_OPEN = 1; then
 
 
 
+
+
+
+
   if test "$ac_cv_header_winsock2_h" = yes; then
     UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1
     SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1
@@ -34954,6 +35358,13 @@ $as_echo "#define GNULIB_TEST_STRTOK_R 1" >>confdefs.h
 
 
 
+
+
+
+
+
+
+
 
 
 
index 80b2bb49c081a15aa8f93625ce7a065efc5e6485..07ef9851117a8a9e37681e8105b07e8f0981b3cf 100644 (file)
@@ -63,6 +63,7 @@
 #  mkdtemp \
 #  mkostemp \
 #  netdb \
+#  nonblocking \
 #  pathmax \
 #  rawmemchr \
 #  readlink \
@@ -968,6 +969,16 @@ EXTRA_DIST += inttypes.in.h
 
 ## end   gnulib module inttypes-incomplete
 
+## begin gnulib module ioctl
+
+if GL_COND_OBJ_IOCTL
+libgnu_a_SOURCES += ioctl.c
+endif
+
+EXTRA_DIST += w32sock.h
+
+## end   gnulib module ioctl
+
 ## begin gnulib module isblank
 
 if GL_COND_OBJ_ISBLANK
@@ -1619,6 +1630,16 @@ EXTRA_DIST += netinet_in.in.h
 
 ## end   gnulib module netinet_in
 
+## begin gnulib module nonblocking
+
+libgnu_a_SOURCES += nonblocking.c
+
+EXTRA_DIST += nonblocking.h stdio-read.c stdio-write.c
+
+EXTRA_libgnu_a_SOURCES += stdio-read.c stdio-write.c
+
+## end   gnulib module nonblocking
+
 ## begin gnulib module open
 
 if GL_COND_OBJ_OPEN
@@ -2578,6 +2599,36 @@ endif
 
 ## end   gnulib module strtok_r
 
+## begin gnulib module sys_ioctl
+
+BUILT_SOURCES += sys/ioctl.h
+
+# We need the following in order to create <sys/ioctl.h> when the system
+# does not have a complete one.
+sys/ioctl.h: sys_ioctl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+       $(AM_V_at)$(SED_HEADER_STDOUT) \
+             -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_SYS_IOCTL_H''@|$(HAVE_SYS_IOCTL_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_IOCTL_H''@|$(NEXT_SYS_IOCTL_H)|g' \
+             -e 's/@''GNULIB_IOCTL''@/$(GL_GNULIB_IOCTL)/g' \
+             -e 's|@''SYS_IOCTL_H_HAVE_WINSOCK2_H''@|$(SYS_IOCTL_H_HAVE_WINSOCK2_H)|g' \
+             -e 's|@''SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+             -e 's|@''REPLACE_IOCTL''@|$(REPLACE_IOCTL)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             $(srcdir)/sys_ioctl.in.h > $@-t
+       $(AM_V_at)mv $@-t $@
+MOSTLYCLEANFILES += sys/ioctl.h sys/ioctl.h-t
+MOSTLYCLEANDIRS += sys
+
+EXTRA_DIST += sys_ioctl.in.h
+
+## end   gnulib module sys_ioctl
+
 ## begin gnulib module sys_random
 
 BUILT_SOURCES += sys/random.h
index 1899bebba36892aab3ba5888f662f56741f54582..db5a195750ef1a3c8752964e582f237995151652 100644 (file)
@@ -77,6 +77,7 @@
 #  mkdtemp \
 #  mkostemp \
 #  netdb \
+#  nonblocking \
 #  pathmax \
 #  rawmemchr \
 #  readlink \
@@ -210,53 +211,54 @@ target_triplet = @target@
 @GL_COND_OBJ_GLOB_TRUE@am__append_32 = glob.c globfree.c
 @GL_COND_OBJ_GLOB_PATTERN_P_TRUE@am__append_33 = glob_pattern_p.c
 @GL_COND_OBJ_INET_NTOP_TRUE@am__append_34 = inet_ntop.c
-@GL_COND_OBJ_ISBLANK_TRUE@am__append_35 = isblank.c
-@GL_COND_OBJ_LISTEN_TRUE@am__append_36 = listen.c
-@GL_COND_OBJ_LSTAT_TRUE@am__append_37 = lstat.c
-@GL_COND_OBJ_MBRTOWC_TRUE@am__append_38 = mbrtowc.c
-@GL_COND_OBJ_MBSINIT_TRUE@am__append_39 = mbsinit.c
-@GL_COND_OBJ_MBSRTOWCS_TRUE@am__append_40 = mbsrtowcs.c
-@GL_COND_OBJ_MBTOWC_TRUE@am__append_41 = mbtowc.c
-@GL_COND_OBJ_MEMCHR_TRUE@am__append_42 = memchr.c
-@GL_COND_OBJ_MEMPCPY_TRUE@am__append_43 = mempcpy.c
-@GL_COND_OBJ_MEMRCHR_TRUE@am__append_44 = memrchr.c
-@GL_COND_OBJ_MKDIR_TRUE@am__append_45 = mkdir.c
-@GL_COND_OBJ_MKDTEMP_TRUE@am__append_46 = mkdtemp.c
-@GL_COND_OBJ_MKOSTEMP_TRUE@am__append_47 = mkostemp.c
-@GL_COND_OBJ_MSVC_INVAL_TRUE@am__append_48 = msvc-inval.c
-@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__append_49 = msvc-nothrow.c
-@GL_COND_OBJ_OPEN_TRUE@am__append_50 = open.c
-@GL_COND_OBJ_OPENAT_TRUE@am__append_51 = openat.c
-@GL_COND_OBJ_OPENDIR_TRUE@am__append_52 = opendir.c
-@GL_COND_OBJ_PIPE_TRUE@am__append_53 = pipe.c
-@GL_COND_OBJ_RAWMEMCHR_TRUE@am__append_54 = rawmemchr.c
-@GL_COND_OBJ_READDIR_TRUE@am__append_55 = readdir.c
-@GL_COND_OBJ_READLINK_TRUE@am__append_56 = readlink.c
-@GL_COND_OBJ_RENAME_TRUE@am__append_57 = rename.c
-@GL_COND_OBJ_REWINDDIR_TRUE@am__append_58 = rewinddir.c
-@GL_COND_OBJ_RMDIR_TRUE@am__append_59 = rmdir.c
-@GL_COND_OBJ_SELECT_TRUE@am__append_60 = select.c
-@GL_COND_OBJ_SETENV_TRUE@am__append_61 = setenv.c
-@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__append_62 = setlocale-lock.c
-@GL_COND_OBJ_SETSOCKOPT_TRUE@am__append_63 = setsockopt.c
-@GL_COND_OBJ_SOCKET_TRUE@am__append_64 = socket.c
-@GL_COND_OBJ_STAT_TRUE@am__append_65 = stat.c
-@GL_COND_OBJ_STDIO_READ_TRUE@am__append_66 = stdio-read.c
-@GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_67 = stdio-write.c
-@GL_COND_OBJ_STRCHRNUL_TRUE@am__append_68 = strchrnul.c
-@GL_COND_OBJ_STRDUP_TRUE@am__append_69 = strdup.c
-@GL_COND_OBJ_STRERROR_TRUE@am__append_70 = strerror.c
-@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_71 = strerror-override.c
-@GL_COND_OBJ_STRNLEN_TRUE@am__append_72 = strnlen.c
-@GL_COND_OBJ_STRTOK_R_TRUE@am__append_73 = strtok_r.c
-@GL_COND_OBJ_TIME_R_TRUE@am__append_74 = time_r.c
-@GL_COND_OBJ_UNSETENV_TRUE@am__append_75 = unsetenv.c
-@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__append_76 = windows-mutex.c
-@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__append_77 = windows-once.c
-@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__append_78 = windows-recmutex.c
-@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__append_79 = windows-rwlock.c
-@GL_COND_OBJ_WMEMCHR_TRUE@am__append_80 = wmemchr.c
-@GL_COND_OBJ_WMEMPCPY_TRUE@am__append_81 = wmempcpy.c
+@GL_COND_OBJ_IOCTL_TRUE@am__append_35 = ioctl.c
+@GL_COND_OBJ_ISBLANK_TRUE@am__append_36 = isblank.c
+@GL_COND_OBJ_LISTEN_TRUE@am__append_37 = listen.c
+@GL_COND_OBJ_LSTAT_TRUE@am__append_38 = lstat.c
+@GL_COND_OBJ_MBRTOWC_TRUE@am__append_39 = mbrtowc.c
+@GL_COND_OBJ_MBSINIT_TRUE@am__append_40 = mbsinit.c
+@GL_COND_OBJ_MBSRTOWCS_TRUE@am__append_41 = mbsrtowcs.c
+@GL_COND_OBJ_MBTOWC_TRUE@am__append_42 = mbtowc.c
+@GL_COND_OBJ_MEMCHR_TRUE@am__append_43 = memchr.c
+@GL_COND_OBJ_MEMPCPY_TRUE@am__append_44 = mempcpy.c
+@GL_COND_OBJ_MEMRCHR_TRUE@am__append_45 = memrchr.c
+@GL_COND_OBJ_MKDIR_TRUE@am__append_46 = mkdir.c
+@GL_COND_OBJ_MKDTEMP_TRUE@am__append_47 = mkdtemp.c
+@GL_COND_OBJ_MKOSTEMP_TRUE@am__append_48 = mkostemp.c
+@GL_COND_OBJ_MSVC_INVAL_TRUE@am__append_49 = msvc-inval.c
+@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__append_50 = msvc-nothrow.c
+@GL_COND_OBJ_OPEN_TRUE@am__append_51 = open.c
+@GL_COND_OBJ_OPENAT_TRUE@am__append_52 = openat.c
+@GL_COND_OBJ_OPENDIR_TRUE@am__append_53 = opendir.c
+@GL_COND_OBJ_PIPE_TRUE@am__append_54 = pipe.c
+@GL_COND_OBJ_RAWMEMCHR_TRUE@am__append_55 = rawmemchr.c
+@GL_COND_OBJ_READDIR_TRUE@am__append_56 = readdir.c
+@GL_COND_OBJ_READLINK_TRUE@am__append_57 = readlink.c
+@GL_COND_OBJ_RENAME_TRUE@am__append_58 = rename.c
+@GL_COND_OBJ_REWINDDIR_TRUE@am__append_59 = rewinddir.c
+@GL_COND_OBJ_RMDIR_TRUE@am__append_60 = rmdir.c
+@GL_COND_OBJ_SELECT_TRUE@am__append_61 = select.c
+@GL_COND_OBJ_SETENV_TRUE@am__append_62 = setenv.c
+@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__append_63 = setlocale-lock.c
+@GL_COND_OBJ_SETSOCKOPT_TRUE@am__append_64 = setsockopt.c
+@GL_COND_OBJ_SOCKET_TRUE@am__append_65 = socket.c
+@GL_COND_OBJ_STAT_TRUE@am__append_66 = stat.c
+@GL_COND_OBJ_STDIO_READ_TRUE@am__append_67 = stdio-read.c
+@GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_68 = stdio-write.c
+@GL_COND_OBJ_STRCHRNUL_TRUE@am__append_69 = strchrnul.c
+@GL_COND_OBJ_STRDUP_TRUE@am__append_70 = strdup.c
+@GL_COND_OBJ_STRERROR_TRUE@am__append_71 = strerror.c
+@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_72 = strerror-override.c
+@GL_COND_OBJ_STRNLEN_TRUE@am__append_73 = strnlen.c
+@GL_COND_OBJ_STRTOK_R_TRUE@am__append_74 = strtok_r.c
+@GL_COND_OBJ_TIME_R_TRUE@am__append_75 = time_r.c
+@GL_COND_OBJ_UNSETENV_TRUE@am__append_76 = unsetenv.c
+@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__append_77 = windows-mutex.c
+@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__append_78 = windows-once.c
+@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__append_79 = windows-recmutex.c
+@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__append_80 = windows-rwlock.c
+@GL_COND_OBJ_WMEMCHR_TRUE@am__append_81 = wmemchr.c
+@GL_COND_OBJ_WMEMPCPY_TRUE@am__append_82 = wmempcpy.c
 subdir = import
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
@@ -264,6 +266,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/absolute-header.m4 \
        $(top_srcdir)/import/m4/alloca.m4 \
        $(top_srcdir)/import/m4/arpa_inet_h.m4 \
+       $(top_srcdir)/import/m4/asm-underscore.m4 \
        $(top_srcdir)/import/m4/btowc.m4 \
        $(top_srcdir)/import/m4/builtin-expect.m4 \
        $(top_srcdir)/import/m4/canonicalize.m4 \
@@ -323,6 +326,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/include_next.m4 \
        $(top_srcdir)/import/m4/inet_ntop.m4 \
        $(top_srcdir)/import/m4/inttypes.m4 \
+       $(top_srcdir)/import/m4/ioctl.m4 \
        $(top_srcdir)/import/m4/isblank.m4 \
        $(top_srcdir)/import/m4/isnand.m4 \
        $(top_srcdir)/import/m4/isnanl.m4 \
@@ -359,6 +363,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/netdb_h.m4 \
        $(top_srcdir)/import/m4/netinet_in_h.m4 \
        $(top_srcdir)/import/m4/nocrash.m4 \
+       $(top_srcdir)/import/m4/nonblocking.m4 \
        $(top_srcdir)/import/m4/off_t.m4 \
        $(top_srcdir)/import/m4/open-cloexec.m4 \
        $(top_srcdir)/import/m4/open-slash.m4 \
@@ -404,6 +409,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
        $(top_srcdir)/import/m4/strnlen.m4 \
        $(top_srcdir)/import/m4/strstr.m4 \
        $(top_srcdir)/import/m4/strtok_r.m4 \
+       $(top_srcdir)/import/m4/sys_ioctl_h.m4 \
        $(top_srcdir)/import/m4/sys_random_h.m4 \
        $(top_srcdir)/import/m4/sys_select_h.m4 \
        $(top_srcdir)/import/m4/sys_socket_h.m4 \
@@ -493,67 +499,68 @@ am__DEPENDENCIES_1 =
 @GL_COND_OBJ_GLOB_PATTERN_P_TRUE@am__objects_33 = libgnu_a-glob_pattern_p.$(OBJEXT)
 @GL_COND_OBJ_INET_NTOP_TRUE@am__objects_34 =  \
 @GL_COND_OBJ_INET_NTOP_TRUE@   libgnu_a-inet_ntop.$(OBJEXT)
-@GL_COND_OBJ_ISBLANK_TRUE@am__objects_35 = libgnu_a-isblank.$(OBJEXT)
-@GL_COND_OBJ_LISTEN_TRUE@am__objects_36 = libgnu_a-listen.$(OBJEXT)
+@GL_COND_OBJ_IOCTL_TRUE@am__objects_35 = libgnu_a-ioctl.$(OBJEXT)
+@GL_COND_OBJ_ISBLANK_TRUE@am__objects_36 = libgnu_a-isblank.$(OBJEXT)
+@GL_COND_OBJ_LISTEN_TRUE@am__objects_37 = libgnu_a-listen.$(OBJEXT)
 am__dirstamp = $(am__leading_dot)dirstamp
-@GL_COND_OBJ_LSTAT_TRUE@am__objects_37 = libgnu_a-lstat.$(OBJEXT)
-@GL_COND_OBJ_MBRTOWC_TRUE@am__objects_38 = libgnu_a-mbrtowc.$(OBJEXT)
-@GL_COND_OBJ_MBSINIT_TRUE@am__objects_39 = libgnu_a-mbsinit.$(OBJEXT)
-@GL_COND_OBJ_MBSRTOWCS_TRUE@am__objects_40 =  \
+@GL_COND_OBJ_LSTAT_TRUE@am__objects_38 = libgnu_a-lstat.$(OBJEXT)
+@GL_COND_OBJ_MBRTOWC_TRUE@am__objects_39 = libgnu_a-mbrtowc.$(OBJEXT)
+@GL_COND_OBJ_MBSINIT_TRUE@am__objects_40 = libgnu_a-mbsinit.$(OBJEXT)
+@GL_COND_OBJ_MBSRTOWCS_TRUE@am__objects_41 =  \
 @GL_COND_OBJ_MBSRTOWCS_TRUE@   libgnu_a-mbsrtowcs.$(OBJEXT)
-@GL_COND_OBJ_MBTOWC_TRUE@am__objects_41 = libgnu_a-mbtowc.$(OBJEXT)
-@GL_COND_OBJ_MEMCHR_TRUE@am__objects_42 = libgnu_a-memchr.$(OBJEXT)
-@GL_COND_OBJ_MEMPCPY_TRUE@am__objects_43 = libgnu_a-mempcpy.$(OBJEXT)
-@GL_COND_OBJ_MEMRCHR_TRUE@am__objects_44 = libgnu_a-memrchr.$(OBJEXT)
-@GL_COND_OBJ_MKDIR_TRUE@am__objects_45 = libgnu_a-mkdir.$(OBJEXT)
-@GL_COND_OBJ_MKDTEMP_TRUE@am__objects_46 = libgnu_a-mkdtemp.$(OBJEXT)
-@GL_COND_OBJ_MKOSTEMP_TRUE@am__objects_47 =  \
+@GL_COND_OBJ_MBTOWC_TRUE@am__objects_42 = libgnu_a-mbtowc.$(OBJEXT)
+@GL_COND_OBJ_MEMCHR_TRUE@am__objects_43 = libgnu_a-memchr.$(OBJEXT)
+@GL_COND_OBJ_MEMPCPY_TRUE@am__objects_44 = libgnu_a-mempcpy.$(OBJEXT)
+@GL_COND_OBJ_MEMRCHR_TRUE@am__objects_45 = libgnu_a-memrchr.$(OBJEXT)
+@GL_COND_OBJ_MKDIR_TRUE@am__objects_46 = libgnu_a-mkdir.$(OBJEXT)
+@GL_COND_OBJ_MKDTEMP_TRUE@am__objects_47 = libgnu_a-mkdtemp.$(OBJEXT)
+@GL_COND_OBJ_MKOSTEMP_TRUE@am__objects_48 =  \
 @GL_COND_OBJ_MKOSTEMP_TRUE@    libgnu_a-mkostemp.$(OBJEXT)
-@GL_COND_OBJ_MSVC_INVAL_TRUE@am__objects_48 =  \
+@GL_COND_OBJ_MSVC_INVAL_TRUE@am__objects_49 =  \
 @GL_COND_OBJ_MSVC_INVAL_TRUE@  libgnu_a-msvc-inval.$(OBJEXT)
-@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__objects_49 = libgnu_a-msvc-nothrow.$(OBJEXT)
-@GL_COND_OBJ_OPEN_TRUE@am__objects_50 = libgnu_a-open.$(OBJEXT)
-@GL_COND_OBJ_OPENAT_TRUE@am__objects_51 = libgnu_a-openat.$(OBJEXT)
-@GL_COND_OBJ_OPENDIR_TRUE@am__objects_52 = libgnu_a-opendir.$(OBJEXT)
-@GL_COND_OBJ_PIPE_TRUE@am__objects_53 = libgnu_a-pipe.$(OBJEXT)
-@GL_COND_OBJ_RAWMEMCHR_TRUE@am__objects_54 =  \
+@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__objects_50 = libgnu_a-msvc-nothrow.$(OBJEXT)
+@GL_COND_OBJ_OPEN_TRUE@am__objects_51 = libgnu_a-open.$(OBJEXT)
+@GL_COND_OBJ_OPENAT_TRUE@am__objects_52 = libgnu_a-openat.$(OBJEXT)
+@GL_COND_OBJ_OPENDIR_TRUE@am__objects_53 = libgnu_a-opendir.$(OBJEXT)
+@GL_COND_OBJ_PIPE_TRUE@am__objects_54 = libgnu_a-pipe.$(OBJEXT)
+@GL_COND_OBJ_RAWMEMCHR_TRUE@am__objects_55 =  \
 @GL_COND_OBJ_RAWMEMCHR_TRUE@   libgnu_a-rawmemchr.$(OBJEXT)
-@GL_COND_OBJ_READDIR_TRUE@am__objects_55 = libgnu_a-readdir.$(OBJEXT)
-@GL_COND_OBJ_READLINK_TRUE@am__objects_56 =  \
+@GL_COND_OBJ_READDIR_TRUE@am__objects_56 = libgnu_a-readdir.$(OBJEXT)
+@GL_COND_OBJ_READLINK_TRUE@am__objects_57 =  \
 @GL_COND_OBJ_READLINK_TRUE@    libgnu_a-readlink.$(OBJEXT)
-@GL_COND_OBJ_RENAME_TRUE@am__objects_57 = libgnu_a-rename.$(OBJEXT)
-@GL_COND_OBJ_REWINDDIR_TRUE@am__objects_58 =  \
+@GL_COND_OBJ_RENAME_TRUE@am__objects_58 = libgnu_a-rename.$(OBJEXT)
+@GL_COND_OBJ_REWINDDIR_TRUE@am__objects_59 =  \
 @GL_COND_OBJ_REWINDDIR_TRUE@   libgnu_a-rewinddir.$(OBJEXT)
-@GL_COND_OBJ_RMDIR_TRUE@am__objects_59 = libgnu_a-rmdir.$(OBJEXT)
-@GL_COND_OBJ_SELECT_TRUE@am__objects_60 = libgnu_a-select.$(OBJEXT)
-@GL_COND_OBJ_SETENV_TRUE@am__objects_61 = libgnu_a-setenv.$(OBJEXT)
-@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__objects_62 = libgnu_a-setlocale-lock.$(OBJEXT)
-@GL_COND_OBJ_SETSOCKOPT_TRUE@am__objects_63 =  \
+@GL_COND_OBJ_RMDIR_TRUE@am__objects_60 = libgnu_a-rmdir.$(OBJEXT)
+@GL_COND_OBJ_SELECT_TRUE@am__objects_61 = libgnu_a-select.$(OBJEXT)
+@GL_COND_OBJ_SETENV_TRUE@am__objects_62 = libgnu_a-setenv.$(OBJEXT)
+@GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__objects_63 = libgnu_a-setlocale-lock.$(OBJEXT)
+@GL_COND_OBJ_SETSOCKOPT_TRUE@am__objects_64 =  \
 @GL_COND_OBJ_SETSOCKOPT_TRUE@  libgnu_a-setsockopt.$(OBJEXT)
-@GL_COND_OBJ_SOCKET_TRUE@am__objects_64 = libgnu_a-socket.$(OBJEXT)
-@GL_COND_OBJ_STAT_TRUE@am__objects_65 = libgnu_a-stat.$(OBJEXT)
-@GL_COND_OBJ_STDIO_READ_TRUE@am__objects_66 =  \
+@GL_COND_OBJ_SOCKET_TRUE@am__objects_65 = libgnu_a-socket.$(OBJEXT)
+@GL_COND_OBJ_STAT_TRUE@am__objects_66 = libgnu_a-stat.$(OBJEXT)
+@GL_COND_OBJ_STDIO_READ_TRUE@am__objects_67 =  \
 @GL_COND_OBJ_STDIO_READ_TRUE@  libgnu_a-stdio-read.$(OBJEXT)
-@GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_67 =  \
+@GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_68 =  \
 @GL_COND_OBJ_STDIO_WRITE_TRUE@ libgnu_a-stdio-write.$(OBJEXT)
-@GL_COND_OBJ_STRCHRNUL_TRUE@am__objects_68 =  \
+@GL_COND_OBJ_STRCHRNUL_TRUE@am__objects_69 =  \
 @GL_COND_OBJ_STRCHRNUL_TRUE@   libgnu_a-strchrnul.$(OBJEXT)
-@GL_COND_OBJ_STRDUP_TRUE@am__objects_69 = libgnu_a-strdup.$(OBJEXT)
-@GL_COND_OBJ_STRERROR_TRUE@am__objects_70 =  \
+@GL_COND_OBJ_STRDUP_TRUE@am__objects_70 = libgnu_a-strdup.$(OBJEXT)
+@GL_COND_OBJ_STRERROR_TRUE@am__objects_71 =  \
 @GL_COND_OBJ_STRERROR_TRUE@    libgnu_a-strerror.$(OBJEXT)
-@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_71 = libgnu_a-strerror-override.$(OBJEXT)
-@GL_COND_OBJ_STRNLEN_TRUE@am__objects_72 = libgnu_a-strnlen.$(OBJEXT)
-@GL_COND_OBJ_STRTOK_R_TRUE@am__objects_73 =  \
+@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_72 = libgnu_a-strerror-override.$(OBJEXT)
+@GL_COND_OBJ_STRNLEN_TRUE@am__objects_73 = libgnu_a-strnlen.$(OBJEXT)
+@GL_COND_OBJ_STRTOK_R_TRUE@am__objects_74 =  \
 @GL_COND_OBJ_STRTOK_R_TRUE@    libgnu_a-strtok_r.$(OBJEXT)
-@GL_COND_OBJ_TIME_R_TRUE@am__objects_74 = libgnu_a-time_r.$(OBJEXT)
-@GL_COND_OBJ_UNSETENV_TRUE@am__objects_75 =  \
+@GL_COND_OBJ_TIME_R_TRUE@am__objects_75 = libgnu_a-time_r.$(OBJEXT)
+@GL_COND_OBJ_UNSETENV_TRUE@am__objects_76 =  \
 @GL_COND_OBJ_UNSETENV_TRUE@    libgnu_a-unsetenv.$(OBJEXT)
-@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__objects_76 = libgnu_a-windows-mutex.$(OBJEXT)
-@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__objects_77 = libgnu_a-windows-once.$(OBJEXT)
-@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__objects_78 = libgnu_a-windows-recmutex.$(OBJEXT)
-@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__objects_79 = libgnu_a-windows-rwlock.$(OBJEXT)
-@GL_COND_OBJ_WMEMCHR_TRUE@am__objects_80 = libgnu_a-wmemchr.$(OBJEXT)
-@GL_COND_OBJ_WMEMPCPY_TRUE@am__objects_81 =  \
+@GL_COND_OBJ_WINDOWS_MUTEX_TRUE@am__objects_77 = libgnu_a-windows-mutex.$(OBJEXT)
+@GL_COND_OBJ_WINDOWS_ONCE_TRUE@am__objects_78 = libgnu_a-windows-once.$(OBJEXT)
+@GL_COND_OBJ_WINDOWS_RECMUTEX_TRUE@am__objects_79 = libgnu_a-windows-recmutex.$(OBJEXT)
+@GL_COND_OBJ_WINDOWS_RWLOCK_TRUE@am__objects_80 = libgnu_a-windows-rwlock.$(OBJEXT)
+@GL_COND_OBJ_WMEMCHR_TRUE@am__objects_81 = libgnu_a-wmemchr.$(OBJEXT)
+@GL_COND_OBJ_WMEMPCPY_TRUE@am__objects_82 =  \
 @GL_COND_OBJ_WMEMPCPY_TRUE@    libgnu_a-wmempcpy.$(OBJEXT)
 am_libgnu_a_OBJECTS = $(am__objects_1) libgnu_a-openat-proc.$(OBJEXT) \
        libgnu_a-basename-lgpl.$(OBJEXT) $(am__objects_2) \
@@ -575,38 +582,39 @@ am_libgnu_a_OBJECTS = $(am__objects_1) libgnu_a-openat-proc.$(OBJEXT) \
        libgnu_a-getprogname.$(OBJEXT) $(am__objects_30) \
        $(am__objects_31) $(am__objects_32) $(am__objects_33) \
        libgnu_a-hard-locale.$(OBJEXT) $(am__objects_34) \
-       $(am__objects_35) $(am__objects_36) \
+       $(am__objects_35) $(am__objects_36) $(am__objects_37) \
        libgnu_a-localcharset.$(OBJEXT) \
-       glthread/libgnu_a-lock.$(OBJEXT) $(am__objects_37) \
+       glthread/libgnu_a-lock.$(OBJEXT) $(am__objects_38) \
        libgnu_a-malloca.$(OBJEXT) libgnu_a-math.$(OBJEXT) \
-       $(am__objects_38) $(am__objects_39) $(am__objects_40) \
-       $(am__objects_41) $(am__objects_42) $(am__objects_43) \
-       $(am__objects_44) $(am__objects_45) $(am__objects_46) \
-       $(am__objects_47) $(am__objects_48) $(am__objects_49) \
-       $(am__objects_50) $(am__objects_51) \
-       libgnu_a-openat-die.$(OBJEXT) $(am__objects_52) \
+       $(am__objects_39) $(am__objects_40) $(am__objects_41) \
+       $(am__objects_42) $(am__objects_43) $(am__objects_44) \
+       $(am__objects_45) $(am__objects_46) $(am__objects_47) \
+       $(am__objects_48) $(am__objects_49) $(am__objects_50) \
+       libgnu_a-nonblocking.$(OBJEXT) $(am__objects_51) \
+       $(am__objects_52) libgnu_a-openat-die.$(OBJEXT) \
        $(am__objects_53) $(am__objects_54) $(am__objects_55) \
        $(am__objects_56) $(am__objects_57) $(am__objects_58) \
-       $(am__objects_59) libgnu_a-save-cwd.$(OBJEXT) \
+       $(am__objects_59) $(am__objects_60) \
+       libgnu_a-save-cwd.$(OBJEXT) \
        malloc/libgnu_a-scratch_buffer_dupfree.$(OBJEXT) \
        malloc/libgnu_a-scratch_buffer_grow.$(OBJEXT) \
        malloc/libgnu_a-scratch_buffer_grow_preserve.$(OBJEXT) \
        malloc/libgnu_a-scratch_buffer_set_array_size.$(OBJEXT) \
-       $(am__objects_60) $(am__objects_61) \
-       libgnu_a-setlocale_null.$(OBJEXT) $(am__objects_62) \
-       $(am__objects_63) $(am__objects_64) libgnu_a-sockets.$(OBJEXT) \
-       $(am__objects_65) libgnu_a-stat-time.$(OBJEXT) \
-       $(am__objects_66) $(am__objects_67) $(am__objects_68) \
-       $(am__objects_69) $(am__objects_70) $(am__objects_71) \
-       $(am__objects_72) libgnu_a-strnlen1.$(OBJEXT) \
-       $(am__objects_73) libgnu_a-sys_socket.$(OBJEXT) \
+       $(am__objects_61) $(am__objects_62) \
+       libgnu_a-setlocale_null.$(OBJEXT) $(am__objects_63) \
+       $(am__objects_64) $(am__objects_65) libgnu_a-sockets.$(OBJEXT) \
+       $(am__objects_66) libgnu_a-stat-time.$(OBJEXT) \
+       $(am__objects_67) $(am__objects_68) $(am__objects_69) \
+       $(am__objects_70) $(am__objects_71) $(am__objects_72) \
+       $(am__objects_73) libgnu_a-strnlen1.$(OBJEXT) \
+       $(am__objects_74) libgnu_a-sys_socket.$(OBJEXT) \
        libgnu_a-tempname.$(OBJEXT) \
-       glthread/libgnu_a-threadlib.$(OBJEXT) $(am__objects_74) \
+       glthread/libgnu_a-threadlib.$(OBJEXT) $(am__objects_75) \
        libgnu_a-unistd.$(OBJEXT) libgnu_a-dup-safer.$(OBJEXT) \
        libgnu_a-fd-safer.$(OBJEXT) libgnu_a-pipe-safer.$(OBJEXT) \
-       $(am__objects_75) libgnu_a-wctype-h.$(OBJEXT) \
-       $(am__objects_76) $(am__objects_77) $(am__objects_78) \
-       $(am__objects_79) $(am__objects_80) $(am__objects_81)
+       $(am__objects_76) libgnu_a-wctype-h.$(OBJEXT) \
+       $(am__objects_77) $(am__objects_78) $(am__objects_79) \
+       $(am__objects_80) $(am__objects_81) $(am__objects_82)
 libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -691,6 +699,7 @@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
 AR = @AR@
 ARFLAGS = @ARFLAGS@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -880,6 +889,7 @@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@
 GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@
 GL_GNULIB_INET_NTOP = @GL_GNULIB_INET_NTOP@
 GL_GNULIB_INET_PTON = @GL_GNULIB_INET_PTON@
+GL_GNULIB_IOCTL = @GL_GNULIB_IOCTL@
 GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@
 GL_GNULIB_ISBLANK = @GL_GNULIB_ISBLANK@
 GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@
@@ -1517,6 +1527,7 @@ HAVE_SYMLINK = @HAVE_SYMLINK@
 HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
 HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
 HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_IOCTL_H = @HAVE_SYS_IOCTL_H@
 HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@
@@ -1654,6 +1665,7 @@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
 NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
 NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
 NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@
 NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@
 NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@
 NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
@@ -1686,6 +1698,7 @@ NEXT_STDIO_H = @NEXT_STDIO_H@
 NEXT_STDLIB_H = @NEXT_STDLIB_H@
 NEXT_STRINGS_H = @NEXT_STRINGS_H@
 NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_IOCTL_H = @NEXT_SYS_IOCTL_H@
 NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@
 NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@
 NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@
@@ -1820,6 +1833,7 @@ REPLACE_ILOGBL = @REPLACE_ILOGBL@
 REPLACE_INET_NTOP = @REPLACE_INET_NTOP@
 REPLACE_INET_PTON = @REPLACE_INET_PTON@
 REPLACE_INITSTATE = @REPLACE_INITSTATE@
+REPLACE_IOCTL = @REPLACE_IOCTL@
 REPLACE_ISATTY = @REPLACE_ISATTY@
 REPLACE_ISFINITE = @REPLACE_ISFINITE@
 REPLACE_ISINF = @REPLACE_ISINF@
@@ -1998,6 +2012,8 @@ STDBOOL_H = @STDBOOL_H@
 STDDEF_H = @STDDEF_H@
 STDINT_H = @STDINT_H@
 STRIP = @STRIP@
+SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@
+SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
 TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
 TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@
@@ -2093,26 +2109,28 @@ EXTRA_DIST = m4/gnulib-cache.m4 w32sock.h alloca.c alloca.in.h \
        $(top_srcdir)/import/extra/gendocs.sh \
        $(top_srcdir)/import/extra/gitlog-to-changelog glob_internal.h \
        glob-libc.h glob.in.h hard-locale.h intprops.h inttypes.in.h \
-       float+.h isnan.c isnand-nolibm.h isnand.c float+.h isnan.c \
-       isnanl-nolibm.h isnanl.c cdefs.h libc-config.h limits.in.h \
-       w32sock.h localcharset.h locale.in.h malloc.c malloca.h \
-       math.in.h lc-charset-dispatch.c lc-charset-dispatch.h \
-       mbrtowc-impl-utf8.h mbrtowc-impl.h mbtowc-lock.c mbtowc-lock.h \
-       windows-initguard.h mbsrtowcs-impl.h mbsrtowcs-state.c \
-       mbtowc-impl.h memchr.valgrind memmem.c memmem.c str-two-way.h \
-       msvc-inval.h msvc-nothrow.h netdb.in.h netinet_in.in.h \
-       openat.h dirent-private.h pathmax.h rawmemchr.valgrind \
-       dirent-private.h realloc.c dirent-private.h same-inode.h \
-       save-cwd.h malloc/scratch_buffer.h scratch_buffer.h \
-       setlocale_null.h windows-initguard.h w32sock.h signal.in.h \
-       _Noreturn.h arg-nonnull.h c++defs.h warn-on-use.h w32sock.h \
-       w32sock.h stat-w32.c stat-w32.h stat-time.h stdalign.in.h \
-       stdbool.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \
-       strchrnul.valgrind streq.h strerror-override.h strerror_r.c \
-       string.in.h strings.in.h strstr.c str-two-way.h strstr.c \
-       sys_random.in.h sys_select.in.h sys_socket.in.h sys_stat.in.h \
-       sys_time.in.h sys_types.in.h sys_uio.in.h sys_wait.in.h \
-       tempname.h time.in.h unistd.in.h unistd--.h unistd-safer.h \
+       w32sock.h float+.h isnan.c isnand-nolibm.h isnand.c float+.h \
+       isnan.c isnanl-nolibm.h isnanl.c cdefs.h libc-config.h \
+       limits.in.h w32sock.h localcharset.h locale.in.h malloc.c \
+       malloca.h math.in.h lc-charset-dispatch.c \
+       lc-charset-dispatch.h mbrtowc-impl-utf8.h mbrtowc-impl.h \
+       mbtowc-lock.c mbtowc-lock.h windows-initguard.h \
+       mbsrtowcs-impl.h mbsrtowcs-state.c mbtowc-impl.h \
+       memchr.valgrind memmem.c memmem.c str-two-way.h msvc-inval.h \
+       msvc-nothrow.h netdb.in.h netinet_in.in.h nonblocking.h \
+       stdio-read.c stdio-write.c openat.h dirent-private.h pathmax.h \
+       rawmemchr.valgrind dirent-private.h realloc.c dirent-private.h \
+       same-inode.h save-cwd.h malloc/scratch_buffer.h \
+       scratch_buffer.h setlocale_null.h windows-initguard.h \
+       w32sock.h signal.in.h _Noreturn.h arg-nonnull.h c++defs.h \
+       warn-on-use.h w32sock.h w32sock.h stat-w32.c stat-w32.h \
+       stat-time.h stdalign.in.h stdbool.in.h stddef.in.h stdint.in.h \
+       stdio.in.h stdlib.in.h strchrnul.valgrind streq.h \
+       strerror-override.h strerror_r.c string.in.h strings.in.h \
+       strstr.c str-two-way.h strstr.c sys_ioctl.in.h sys_random.in.h \
+       sys_select.in.h sys_socket.in.h sys_stat.in.h sys_time.in.h \
+       sys_types.in.h sys_uio.in.h sys_wait.in.h tempname.h time.in.h \
+       unistd.in.h unistd--.h unistd-safer.h \
        $(top_srcdir)/import/extra/update-copyright verify.h \
        wchar.in.h wctype.in.h windows-initguard.h windows-mutex.h \
        windows-once.h windows-initguard.h windows-recmutex.h \
@@ -2123,9 +2141,9 @@ BUILT_SOURCES = $(ALLOCA_H) arpa/inet.h ctype.h dirent.h $(ERRNO_H) \
        inttypes.h $(LIMITS_H) locale.h math.h netdb.h $(NETINET_IN_H) \
        malloc/scratch_buffer.gl.h signal.h $(STDALIGN_H) $(STDBOOL_H) \
        $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h strings.h \
-       sys/random.h sys/select.h sys/socket.h sys/stat.h sys/time.h \
-       sys/types.h sys/uio.h sys/wait.h time.h unistd.h wchar.h \
-       wctype.h
+       sys/ioctl.h sys/random.h sys/select.h sys/socket.h sys/stat.h \
+       sys/time.h sys/types.h sys/uio.h sys/wait.h time.h unistd.h \
+       wchar.h wctype.h
 SUFFIXES = 
 MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
        arpa/inet.h-t ctype.h ctype.h-t dirent.h dirent.h-t errno.h \
@@ -2137,13 +2155,13 @@ MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
        malloc/scratch_buffer.gl.h-t signal.h signal.h-t stdalign.h \
        stdalign.h-t stdbool.h stdbool.h-t stddef.h stddef.h-t \
        stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \
-       string.h string.h-t strings.h strings.h-t sys/random.h \
-       sys/random.h-t sys/select.h sys/select.h-t sys/socket.h \
-       sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \
-       sys/types.h sys/types.h-t sys/uio.h sys/uio.h-t sys/wait.h \
-       sys/wait.h-t time.h time.h-t unistd.h unistd.h-t wchar.h \
-       wchar.h-t wctype.h wctype.h-t
-MOSTLYCLEANDIRS = arpa netinet sys sys sys sys sys sys
+       string.h string.h-t strings.h strings.h-t sys/ioctl.h \
+       sys/ioctl.h-t sys/random.h sys/random.h-t sys/select.h \
+       sys/select.h-t sys/socket.h sys/socket.h-t sys/stat.h \
+       sys/stat.h-t sys/time.h sys/time.h-t sys/types.h sys/types.h-t \
+       sys/uio.h sys/uio.h-t sys/wait.h sys/wait.h-t time.h time.h-t \
+       unistd.h unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t
+MOSTLYCLEANDIRS = arpa netinet sys sys sys sys sys sys sys
 CLEANFILES = 
 DISTCLEANFILES = 
 MAINTAINERCLEANFILES = 
@@ -2164,37 +2182,37 @@ libgnu_a_SOURCES = $(am__append_1) openat-priv.h openat-proc.c \
        $(am__append_29) getprogname.h getprogname.c $(am__append_30) \
        gettext.h $(am__append_31) $(am__append_32) $(am__append_33) \
        hard-locale.c idx.h $(am__append_34) $(am__append_35) \
-       $(am__append_36) localcharset.c glthread/lock.h \
-       glthread/lock.c $(am__append_37) malloca.c math.c \
-       $(am__append_38) $(am__append_39) $(am__append_40) \
-       $(am__append_41) $(am__append_42) $(am__append_43) \
-       $(am__append_44) minmax.h $(am__append_45) $(am__append_46) \
-       $(am__append_47) $(am__append_48) $(am__append_49) \
-       $(am__append_50) $(am__append_51) openat-die.c \
-       $(am__append_52) $(am__append_53) $(am__append_54) \
-       $(am__append_55) $(am__append_56) $(am__append_57) \
-       $(am__append_58) $(am__append_59) save-cwd.c \
+       $(am__append_36) $(am__append_37) localcharset.c \
+       glthread/lock.h glthread/lock.c $(am__append_38) malloca.c \
+       math.c $(am__append_39) $(am__append_40) $(am__append_41) \
+       $(am__append_42) $(am__append_43) $(am__append_44) \
+       $(am__append_45) minmax.h $(am__append_46) $(am__append_47) \
+       $(am__append_48) $(am__append_49) $(am__append_50) \
+       nonblocking.c $(am__append_51) $(am__append_52) openat-die.c \
+       $(am__append_53) $(am__append_54) $(am__append_55) \
+       $(am__append_56) $(am__append_57) $(am__append_58) \
+       $(am__append_59) $(am__append_60) save-cwd.c \
        malloc/scratch_buffer_dupfree.c malloc/scratch_buffer_grow.c \
        malloc/scratch_buffer_grow_preserve.c \
-       malloc/scratch_buffer_set_array_size.c $(am__append_60) \
-       $(am__append_61) setlocale_null.c $(am__append_62) \
-       $(am__append_63) $(am__append_64) sockets.h sockets.c \
-       $(am__append_65) stat-time.c $(am__append_66) $(am__append_67) \
-       $(am__append_68) $(am__append_69) $(am__append_70) \
-       $(am__append_71) $(am__append_72) strnlen1.h strnlen1.c \
-       $(am__append_73) sys_socket.c tempname.c glthread/threadlib.c \
-       $(am__append_74) unistd.c dup-safer.c fd-safer.c pipe-safer.c \
-       $(am__append_75) wctype-h.c $(am__append_76) $(am__append_77) \
-       $(am__append_78) $(am__append_79) $(am__append_80) \
-       $(am__append_81)
+       malloc/scratch_buffer_set_array_size.c $(am__append_61) \
+       $(am__append_62) setlocale_null.c $(am__append_63) \
+       $(am__append_64) $(am__append_65) sockets.h sockets.c \
+       $(am__append_66) stat-time.c $(am__append_67) $(am__append_68) \
+       $(am__append_69) $(am__append_70) $(am__append_71) \
+       $(am__append_72) $(am__append_73) strnlen1.h strnlen1.c \
+       $(am__append_74) sys_socket.c tempname.c glthread/threadlib.c \
+       $(am__append_75) unistd.c dup-safer.c fd-safer.c pipe-safer.c \
+       $(am__append_76) wctype-h.c $(am__append_77) $(am__append_78) \
+       $(am__append_79) $(am__append_80) $(am__append_81) \
+       $(am__append_82)
 libgnu_a_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS)
 libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
 libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
 EXTRA_libgnu_a_SOURCES = alloca.c fnmatch.c fnmatch_loop.c fnmatch.c \
        frexp.c frexp.c frexpl.c stat-w32.c at-func.c isnan.c isnand.c \
        isnan.c isnanl.c malloc.c lc-charset-dispatch.c mbtowc-lock.c \
-       mbsrtowcs-state.c memmem.c memmem.c realloc.c stat-w32.c \
-       strerror_r.c strstr.c strstr.c
+       mbsrtowcs-state.c memmem.c memmem.c stdio-read.c stdio-write.c \
+       realloc.c stat-w32.c strerror_r.c strstr.c strstr.c
 
 # Use this preprocessor expression to decide whether #include_next works.
 # Do not rely on a 'configure'-time test for this, since the expression
@@ -2375,6 +2393,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-globfree.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-hard-locale.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-inet_ntop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-isblank.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-isnan.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-isnand.Po@am__quote@
@@ -2402,6 +2421,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-mkostemp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-msvc-inval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-msvc-nothrow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-nonblocking.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-open.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat-die.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-openat-proc.Po@am__quote@
@@ -3146,6 +3166,20 @@ libgnu_a-inet_ntop.obj: inet_ntop.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-inet_ntop.obj `if test -f 'inet_ntop.c'; then $(CYGPATH_W) 'inet_ntop.c'; else $(CYGPATH_W) '$(srcdir)/inet_ntop.c'; fi`
 
+libgnu_a-ioctl.o: ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-ioctl.o -MD -MP -MF $(DEPDIR)/libgnu_a-ioctl.Tpo -c -o libgnu_a-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-ioctl.Tpo $(DEPDIR)/libgnu_a-ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioctl.c' object='libgnu_a-ioctl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
+
+libgnu_a-ioctl.obj: ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-ioctl.obj -MD -MP -MF $(DEPDIR)/libgnu_a-ioctl.Tpo -c -o libgnu_a-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-ioctl.Tpo $(DEPDIR)/libgnu_a-ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioctl.c' object='libgnu_a-ioctl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
+
 libgnu_a-isblank.o: isblank.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-isblank.o -MD -MP -MF $(DEPDIR)/libgnu_a-isblank.Tpo -c -o libgnu_a-isblank.o `test -f 'isblank.c' || echo '$(srcdir)/'`isblank.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-isblank.Tpo $(DEPDIR)/libgnu_a-isblank.Po
@@ -3412,6 +3446,20 @@ libgnu_a-msvc-nothrow.obj: msvc-nothrow.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-msvc-nothrow.obj `if test -f 'msvc-nothrow.c'; then $(CYGPATH_W) 'msvc-nothrow.c'; else $(CYGPATH_W) '$(srcdir)/msvc-nothrow.c'; fi`
 
+libgnu_a-nonblocking.o: nonblocking.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-nonblocking.o -MD -MP -MF $(DEPDIR)/libgnu_a-nonblocking.Tpo -c -o libgnu_a-nonblocking.o `test -f 'nonblocking.c' || echo '$(srcdir)/'`nonblocking.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-nonblocking.Tpo $(DEPDIR)/libgnu_a-nonblocking.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nonblocking.c' object='libgnu_a-nonblocking.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-nonblocking.o `test -f 'nonblocking.c' || echo '$(srcdir)/'`nonblocking.c
+
+libgnu_a-nonblocking.obj: nonblocking.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-nonblocking.obj -MD -MP -MF $(DEPDIR)/libgnu_a-nonblocking.Tpo -c -o libgnu_a-nonblocking.obj `if test -f 'nonblocking.c'; then $(CYGPATH_W) 'nonblocking.c'; else $(CYGPATH_W) '$(srcdir)/nonblocking.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-nonblocking.Tpo $(DEPDIR)/libgnu_a-nonblocking.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nonblocking.c' object='libgnu_a-nonblocking.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-nonblocking.obj `if test -f 'nonblocking.c'; then $(CYGPATH_W) 'nonblocking.c'; else $(CYGPATH_W) '$(srcdir)/nonblocking.c'; fi`
+
 libgnu_a-open.o: open.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-open.o -MD -MP -MF $(DEPDIR)/libgnu_a-open.Tpo -c -o libgnu_a-open.o `test -f 'open.c' || echo '$(srcdir)/'`open.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-open.Tpo $(DEPDIR)/libgnu_a-open.Po
@@ -5720,6 +5768,26 @@ strings.h: strings.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE
              $(srcdir)/strings.in.h > $@-t
        $(AM_V_at)mv $@-t $@
 
+# We need the following in order to create <sys/ioctl.h> when the system
+# does not have a complete one.
+sys/ioctl.h: sys_ioctl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+       $(AM_V_GEN)$(MKDIR_P) 'sys'
+       $(AM_V_at)$(SED_HEADER_STDOUT) \
+             -e 's|@''GUARD_PREFIX''@|GL|g' \
+             -e 's|@''HAVE_SYS_IOCTL_H''@|$(HAVE_SYS_IOCTL_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_SYS_IOCTL_H''@|$(NEXT_SYS_IOCTL_H)|g' \
+             -e 's/@''GNULIB_IOCTL''@/$(GL_GNULIB_IOCTL)/g' \
+             -e 's|@''SYS_IOCTL_H_HAVE_WINSOCK2_H''@|$(SYS_IOCTL_H_HAVE_WINSOCK2_H)|g' \
+             -e 's|@''SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+             -e 's|@''REPLACE_IOCTL''@|$(REPLACE_IOCTL)|g' \
+             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+             $(srcdir)/sys_ioctl.in.h > $@-t
+       $(AM_V_at)mv $@-t $@
+
 # We need the following in order to create <sys/random.h> when the system
 # doesn't have one.
 sys/random.h: sys_random.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
diff --git a/gnulib/import/ioctl.c b/gnulib/import/ioctl.c
new file mode 100644 (file)
index 0000000..b1c7b2e
--- /dev/null
@@ -0,0 +1,92 @@
+/* ioctl.c --- wrappers for Windows ioctl function
+
+   Copyright (C) 2008-2022 Free Software Foundation, Inc.
+
+   This file is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   This file is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+/* Written by Paolo Bonzini */
+
+#include <config.h>
+
+#include <sys/ioctl.h>
+
+#include <stdarg.h>
+
+#if HAVE_IOCTL
+
+/* Provide a wrapper with the POSIX prototype.  */
+# undef ioctl
+int
+rpl_ioctl (int fd, int request, ... /* {void *,char *} arg */)
+{
+  void *buf;
+  va_list args;
+
+  va_start (args, request);
+  buf = va_arg (args, void *);
+  va_end (args);
+
+  /* Cast 'request' so that when the system's ioctl function takes a 64-bit
+     request argument, the value gets zero-extended, not sign-extended.  */
+  return ioctl (fd, (unsigned int) request, buf);
+}
+
+#else /* mingw */
+
+# include <errno.h>
+
+/* Get HANDLE.  */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# include "fd-hook.h"
+/* Get _get_osfhandle.  */
+# if GNULIB_MSVC_NOTHROW
+#  include "msvc-nothrow.h"
+# else
+#  include <io.h>
+# endif
+
+static int
+primary_ioctl (int fd, int request, void *arg)
+{
+  /* We don't support FIONBIO on pipes here.  If you want to make pipe
+     fds non-blocking, use the gnulib 'nonblocking' module, until
+     gnulib implements fcntl F_GETFL / F_SETFL with O_NONBLOCK.  */
+
+  if ((HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE)
+    errno = ENOSYS;
+  else
+    errno = EBADF;
+  return -1;
+}
+
+int
+ioctl (int fd, int request, ... /* {void *,char *} arg */)
+{
+  void *arg;
+  va_list args;
+
+  va_start (args, request);
+  arg = va_arg (args, void *);
+  va_end (args);
+
+# if WINDOWS_SOCKETS
+  return execute_all_ioctl_hooks (primary_ioctl, fd, request, arg);
+# else
+  return primary_ioctl (fd, request, arg);
+# endif
+}
+
+#endif
diff --git a/gnulib/import/m4/asm-underscore.m4 b/gnulib/import/m4/asm-underscore.m4
new file mode 100644 (file)
index 0000000..950aa8d
--- /dev/null
@@ -0,0 +1,83 @@
+# asm-underscore.m4 serial 5
+dnl Copyright (C) 2010-2022 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
+
+# gl_ASM_SYMBOL_PREFIX
+# Tests for the prefix of C symbols at the assembly language level and the
+# linker level. This prefix is either an underscore or empty. Defines the
+# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
+# a stringified variant of this prefix.
+
+AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
+[
+  AC_REQUIRE([AC_PROG_EGREP])
+  dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
+  dnl 1. It works only for GCC.
+  dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
+  AC_REQUIRE([gl_C_ASM])
+  AC_CACHE_CHECK(
+    [whether C symbols are prefixed with underscore at the linker level],
+    [gl_cv_prog_as_underscore],
+    [cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" int foo (void);
+#endif
+int foo(void) { return 0; }
+EOF
+     # Look for the assembly language name in the .s file.
+     AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+     if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then
+       gl_cv_prog_as_underscore=yes
+     else
+       gl_cv_prog_as_underscore=no
+     fi
+     rm -f conftest*
+    ])
+  if test $gl_cv_prog_as_underscore = yes; then
+    USER_LABEL_PREFIX=_
+  else
+    USER_LABEL_PREFIX=
+  fi
+  AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
+    [Define to the prefix of C symbols at the assembler and linker level,
+     either an underscore or empty.])
+  ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
+  AC_SUBST([ASM_SYMBOL_PREFIX])
+])
+
+# gl_C_ASM
+# Determines how to produce an assembly language file from C source code.
+# Sets the variables:
+#   gl_asmext - the extension of assembly language output,
+#   gl_c_asm_opt - the C compiler option that produces assembly language output.
+
+AC_DEFUN([gl_C_ASM],
+[
+  AC_EGREP_CPP([MicrosoftCompiler],
+    [
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+    ],
+    [dnl Microsoft's 'cl' and 'clang-cl' produce an .asm file, whereas 'clang'
+     dnl produces a .s file. Need to distinguish 'clang' and 'clang-cl'.
+     rm -f conftest*
+     echo 'int dummy;' > conftest.c
+     AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c) >/dev/null 2>&1
+     if test -f conftest.o; then
+       gl_asmext='s'
+       gl_c_asm_opt='-S'
+     else
+       gl_asmext='asm'
+       gl_c_asm_opt='-c -Fa'
+     fi
+     rm -f conftest*
+    ],
+    [gl_asmext='s'
+     gl_c_asm_opt='-S'
+    ])
+])
index a5f8e300ffce0316c8bebc160756cbdfea60b062..6529416d2e517bcbea80e04860c507111a479e18 100644 (file)
@@ -68,6 +68,7 @@
 #  mkdtemp \
 #  mkostemp \
 #  netdb \
+#  nonblocking \
 #  pathmax \
 #  rawmemchr \
 #  readlink \
@@ -123,6 +124,7 @@ gl_MODULES([
   mkdtemp
   mkostemp
   netdb
+  nonblocking
   pathmax
   rawmemchr
   readlink
index 94e2cfe1a52ae004983b0616b466f130ade9e8f5..a06733196f496df2807cb1e59e8f944cb8c6d3c8 100644 (file)
@@ -125,6 +125,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module intprops:
   # Code from module inttypes:
   # Code from module inttypes-incomplete:
+  # Code from module ioctl:
   # Code from module isblank:
   # Code from module isnand-nolibm:
   # Code from module isnanl-nolibm:
@@ -160,6 +161,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module netdb:
   # Code from module netinet_in:
   # Code from module nocrash:
+  # Code from module nonblocking:
   # Code from module open:
   # Code from module openat:
   # Code from module openat-die:
@@ -213,6 +215,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module strstr:
   # Code from module strstr-simple:
   # Code from module strtok_r:
+  # Code from module sys_ioctl:
   # Code from module sys_random:
   # Code from module sys_select:
   # Code from module sys_socket:
@@ -517,6 +520,10 @@ AC_DEFUN([gl_INIT],
   gl_INTTYPES_INCOMPLETE
   gl_INTTYPES_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
+  gl_FUNC_IOCTL
+  gl_CONDITIONAL([GL_COND_OBJ_IOCTL],
+                 [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1])
+  gl_SYS_IOCTL_MODULE_INDICATOR([ioctl])
   gl_FUNC_ISBLANK
   gl_CONDITIONAL([GL_COND_OBJ_ISBLANK], [test $HAVE_ISBLANK = 0])
   gl_MODULE_INDICATOR([isblank])
@@ -655,6 +662,17 @@ AC_DEFUN([gl_INIT],
   gl_HEADER_NETINET_IN
   gl_CONDITIONAL_HEADER([netinet/in.h])
   AC_PROG_MKDIR_P
+  gl_NONBLOCKING_IO
+  gl_FCNTL_MODULE_INDICATOR([nonblocking])
+  dnl Define the C macro GNULIB_NONBLOCKING to 1.
+  gl_MODULE_INDICATOR([nonblocking])
+  dnl Define the substituted variable GNULIB_STDIO_H_NONBLOCKING to 1.
+  gl_STDIO_H_REQUIRE_DEFAULTS
+  AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
+  gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_NONBLOCKING], [1])
+  dnl Define the substituted variable GNULIB_UNISTD_H_NONBLOCKING to 1.
+  gl_UNISTD_H_REQUIRE_DEFAULTS
+  gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING], [1])
   gl_FUNC_OPEN
   gl_CONDITIONAL([GL_COND_OBJ_OPEN], [test $REPLACE_OPEN = 1])
   AM_COND_IF([GL_COND_OBJ_OPEN], [
@@ -866,6 +884,9 @@ AC_DEFUN([gl_INIT],
     gl_PREREQ_STRTOK_R
   ])
   gl_STRING_MODULE_INDICATOR([strtok_r])
+  gl_SYS_IOCTL_H
+  gl_SYS_IOCTL_H_REQUIRE_DEFAULTS
+  AC_PROG_MKDIR_P
   gl_SYS_RANDOM_H
   gl_SYS_RANDOM_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
@@ -1210,6 +1231,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/inet_ntop.c
   lib/intprops.h
   lib/inttypes.in.h
+  lib/ioctl.c
   lib/isblank.c
   lib/isnan.c
   lib/isnand-nolibm.h
@@ -1262,6 +1284,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/msvc-nothrow.h
   lib/netdb.in.h
   lib/netinet_in.in.h
+  lib/nonblocking.c
+  lib/nonblocking.h
   lib/open.c
   lib/openat-die.c
   lib/openat-priv.h
@@ -1324,6 +1348,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/strnlen1.h
   lib/strstr.c
   lib/strtok_r.c
+  lib/sys_ioctl.in.h
   lib/sys_random.in.h
   lib/sys_select.in.h
   lib/sys_socket.c
@@ -1366,6 +1391,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/absolute-header.m4
   m4/alloca.m4
   m4/arpa_inet_h.m4
+  m4/asm-underscore.m4
   m4/btowc.m4
   m4/builtin-expect.m4
   m4/canonicalize.m4
@@ -1426,6 +1452,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/include_next.m4
   m4/inet_ntop.m4
   m4/inttypes.m4
+  m4/ioctl.m4
   m4/isblank.m4
   m4/isnand.m4
   m4/isnanl.m4
@@ -1462,6 +1489,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/netdb_h.m4
   m4/netinet_in_h.m4
   m4/nocrash.m4
+  m4/nonblocking.m4
   m4/off_t.m4
   m4/open-cloexec.m4
   m4/open-slash.m4
@@ -1507,6 +1535,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/strnlen.m4
   m4/strstr.m4
   m4/strtok_r.m4
+  m4/sys_ioctl_h.m4
   m4/sys_random_h.m4
   m4/sys_select_h.m4
   m4/sys_socket_h.m4
diff --git a/gnulib/import/m4/ioctl.m4 b/gnulib/import/m4/ioctl.m4
new file mode 100644 (file)
index 0000000..7c72134
--- /dev/null
@@ -0,0 +1,44 @@
+# ioctl.m4 serial 6
+dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_IOCTL],
+[
+  AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])
+  AC_REQUIRE([gl_SYS_SOCKET_H])
+  HAVE_IOCTL=1
+  if test "$ac_cv_header_winsock2_h" = yes; then
+    dnl Even if the 'socket' module is not used here, another part of the
+    dnl application may use it and pass file descriptors that refer to
+    dnl sockets to the ioctl() function. So enable the support for sockets.
+    HAVE_IOCTL=0
+  else
+    AC_CHECK_FUNCS([ioctl])
+    dnl On glibc systems, the second parameter is 'unsigned long int request',
+    dnl not 'int request'. We cannot simply cast the function pointer, but
+    dnl instead need a wrapper.
+    AC_CACHE_CHECK([for ioctl with POSIX signature],
+      [gl_cv_func_ioctl_posix_signature],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <sys/ioctl.h>
+              /* On some platforms, ioctl() is declared in <unistd.h>.  */
+              #include <unistd.h>
+            ]],
+            [[extern
+              #ifdef __cplusplus
+              "C"
+              #endif
+              int ioctl (int, int, ...);
+            ]])
+         ],
+         [gl_cv_func_ioctl_posix_signature=yes],
+         [gl_cv_func_ioctl_posix_signature=no])
+      ])
+    if test $gl_cv_func_ioctl_posix_signature != yes; then
+      REPLACE_IOCTL=1
+    fi
+  fi
+])
diff --git a/gnulib/import/m4/nonblocking.m4 b/gnulib/import/m4/nonblocking.m4
new file mode 100644 (file)
index 0000000..b9d2325
--- /dev/null
@@ -0,0 +1,29 @@
+# nonblocking.m4 serial 3
+dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Tests whether non-blocking I/O is natively supported by read(), write().
+dnl Sets gl_cv_have_nonblocking.
+dnl Also tests whether open() supports O_NONBLOCK.
+dnl Sets gl_cv_have_open_O_NONBLOCK.
+AC_DEFUN([gl_NONBLOCKING_IO],
+[
+  dnl Ensure to expand the default settings once only, before all statements
+  dnl that occur in other macros.
+  AC_REQUIRE([gl_NONBLOCKING_IO_BODY])
+])
+
+AC_DEFUN([gl_NONBLOCKING_IO_BODY],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  case "$host_os" in
+    mingw*) gl_cv_have_nonblocking=no ;;
+    *)      gl_cv_have_nonblocking=yes ;;
+  esac
+  case "$host_os" in
+    mingw*) gl_cv_have_open_O_NONBLOCK=no ;;
+    *)      gl_cv_have_open_O_NONBLOCK=yes ;;
+  esac
+])
diff --git a/gnulib/import/m4/sys_ioctl_h.m4 b/gnulib/import/m4/sys_ioctl_h.m4
new file mode 100644 (file)
index 0000000..be65364
--- /dev/null
@@ -0,0 +1,79 @@
+# sys_ioctl_h.m4 serial 15
+dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Bruno Haible.
+
+AC_DEFUN_ONCE([gl_SYS_IOCTL_H],
+[
+  dnl Ensure to expand the default settings once only, before all statements
+  dnl that occur in other macros.
+  AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])
+
+  AC_CHECK_HEADERS_ONCE([sys/ioctl.h])
+  if test $ac_cv_header_sys_ioctl_h = yes; then
+    HAVE_SYS_IOCTL_H=1
+    dnl Test whether <sys/ioctl.h> declares ioctl(), or whether some other
+    dnl header file, such as <unistd.h> or <stropts.h>, is needed for that.
+    AC_CACHE_CHECK([whether <sys/ioctl.h> declares ioctl],
+      [gl_cv_decl_ioctl_in_sys_ioctl_h],
+      [dnl We cannot use AC_CHECK_DECL because it produces its own messages.
+       AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <sys/ioctl.h>]],
+            [[(void) ioctl;]])],
+         [gl_cv_decl_ioctl_in_sys_ioctl_h=yes],
+         [gl_cv_decl_ioctl_in_sys_ioctl_h=no])
+      ])
+  else
+    HAVE_SYS_IOCTL_H=0
+  fi
+  AC_SUBST([HAVE_SYS_IOCTL_H])
+  dnl <sys/ioctl.h> is always overridden, because of GNULIB_POSIXCHECK.
+  gl_CHECK_NEXT_HEADERS([sys/ioctl.h])
+
+  dnl Check for declarations of anything we want to poison if the
+  dnl corresponding gnulib module is not in use.
+  gl_WARN_ON_USE_PREPARE([[#include <sys/ioctl.h>
+/* Some platforms declare ioctl in the wrong header.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <unistd.h>
+#endif
+    ]], [ioctl])
+])
+
+# gl_SYS_IOCTL_MODULE_INDICATOR([modulename])
+# sets the shell variable that indicates the presence of the given module
+# to a C preprocessor expression that will evaluate to 1.
+# This macro invocation must not occur in macros that are AC_REQUIREd.
+AC_DEFUN([gl_SYS_IOCTL_MODULE_INDICATOR],
+[
+  dnl Ensure to expand the default settings once only.
+  gl_SYS_IOCTL_H_REQUIRE_DEFAULTS
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+  dnl Define it also as a C macro, for the benefit of the unit tests.
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+# Initializes the default values for AC_SUBSTed shell variables.
+# This macro must not be AC_REQUIREd.  It must only be invoked, and only
+# outside of macros or in macros that are not AC_REQUIREd.
+AC_DEFUN([gl_SYS_IOCTL_H_REQUIRE_DEFAULTS],
+[
+  m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_IOCTL_H_MODULE_INDICATOR_DEFAULTS], [
+    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IOCTL])
+  ])
+  m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_IOCTL_H_MODULE_INDICATOR_DEFAULTS])
+  AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])
+])
+
+AC_DEFUN([gl_SYS_IOCTL_H_DEFAULTS],
+[
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  SYS_IOCTL_H_HAVE_WINSOCK2_H=0; AC_SUBST([SYS_IOCTL_H_HAVE_WINSOCK2_H])
+  SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+                        AC_SUBST([SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
+  REPLACE_IOCTL=0;      AC_SUBST([REPLACE_IOCTL])
+])
diff --git a/gnulib/import/nonblocking.c b/gnulib/import/nonblocking.c
new file mode 100644 (file)
index 0000000..9ea31f7
--- /dev/null
@@ -0,0 +1,163 @@
+/* Non-blocking I/O for pipe or socket descriptors.
+   Copyright (C) 2011-2022 Free Software Foundation, Inc.
+
+   This file is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   This file is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "nonblocking.h"
+
+#include <errno.h>
+
+#if defined _WIN32 && ! defined __CYGWIN__
+/* Native Windows API.  */
+
+# include <sys/ioctl.h>
+# include <sys/socket.h>
+# include <unistd.h>
+
+/* Get declarations of the native Windows API functions.  */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# if GNULIB_MSVC_NOTHROW
+#  include "msvc-nothrow.h"
+# else
+#  include <io.h>
+# endif
+
+/* Don't assume that UNICODE is not defined.  */
+# undef GetNamedPipeHandleState
+# define GetNamedPipeHandleState GetNamedPipeHandleStateA
+
+int
+get_nonblocking_flag (int desc)
+{
+  HANDLE h = (HANDLE) _get_osfhandle (desc);
+  if (h == INVALID_HANDLE_VALUE)
+    {
+      errno = EBADF;
+      return -1;
+    }
+  if (GetFileType (h) == FILE_TYPE_PIPE)
+    {
+      /* h is a pipe or socket.  */
+      DWORD state;
+      if (GetNamedPipeHandleState (h, &state, NULL, NULL, NULL, NULL, 0))
+        /* h is a pipe.  */
+        return (state & PIPE_NOWAIT) != 0;
+      else
+        /* h is a socket.  */
+        errno = ENOSYS;
+        return -1;
+    }
+  else
+    /* The native Windows API does not support non-blocking on regular
+       files.  */
+    return 0;
+}
+
+int
+set_nonblocking_flag (int desc, bool value)
+{
+  HANDLE h = (HANDLE) _get_osfhandle (desc);
+  if (h == INVALID_HANDLE_VALUE)
+    {
+      errno = EBADF;
+      return -1;
+    }
+  if (GetFileType (h) == FILE_TYPE_PIPE)
+    {
+      /* h is a pipe or socket.  */
+      DWORD state;
+      if (GetNamedPipeHandleState (h, &state, NULL, NULL, NULL, NULL, 0))
+        {
+          /* h is a pipe.  */
+          if ((state & PIPE_NOWAIT) != 0)
+            {
+              if (value)
+                return 0;
+              state &= ~PIPE_NOWAIT;
+            }
+          else
+            {
+              if (!value)
+                return 0;
+              state |= PIPE_NOWAIT;
+            }
+          if (SetNamedPipeHandleState (h, &state, NULL, NULL))
+            return 0;
+          errno = EINVAL;
+          return -1;
+        }
+      else
+        {
+          /* h is a socket.  */
+          int v = value;
+          return ioctl (desc, FIONBIO, &v);
+        }
+    }
+  else
+    {
+      /* The native Windows API does not support non-blocking on regular
+         files.  */
+      if (!value)
+        return 0;
+      errno = ENOTSUP;
+      return -1;
+    }
+}
+
+#else
+/* Unix API.  */
+
+# include <fcntl.h>
+
+# if GNULIB_defined_O_NONBLOCK
+#  error Please port nonblocking to your platform
+# endif
+
+/* We don't need the gnulib replacement of fcntl() here.  */
+# undef fcntl
+
+int
+get_nonblocking_flag (int desc)
+{
+  int fcntl_flags;
+
+  fcntl_flags = fcntl (desc, F_GETFL, 0);
+  if (fcntl_flags < 0)
+    return -1;
+  return (fcntl_flags & O_NONBLOCK) != 0;
+}
+
+int
+set_nonblocking_flag (int desc, bool value)
+{
+  int fcntl_flags;
+
+  fcntl_flags = fcntl (desc, F_GETFL, 0);
+  if (fcntl_flags < 0)
+    return -1;
+  if (((fcntl_flags & O_NONBLOCK) != 0) == value)
+    return 0;
+  if (value)
+    fcntl_flags |= O_NONBLOCK;
+  else
+    fcntl_flags &= ~O_NONBLOCK;
+  return fcntl (desc, F_SETFL, fcntl_flags);
+}
+
+#endif
diff --git a/gnulib/import/nonblocking.h b/gnulib/import/nonblocking.h
new file mode 100644 (file)
index 0000000..8e00fd7
--- /dev/null
@@ -0,0 +1,62 @@
+/* Non-blocking I/O for pipe or socket descriptors.
+   Copyright (C) 2011-2022 Free Software Foundation, Inc.
+
+   This file is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   This file is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#ifndef _NONBLOCKING_H
+#define _NONBLOCKING_H
+
+#include <stdbool.h>
+
+/* Non-blocking I/O is an I/O mode by which read(), write() calls avoid
+   blocking the current thread.  When non-blocking is enabled:
+   - A read() call returns -1 with errno set to EAGAIN when no data or EOF
+     information is immediately available.
+   - A write() call returns -1 with errno set to EAGAIN when it cannot
+     transport the requested amount of data (but at most one pipe buffer)
+     without blocking.
+   Non-blocking I/O is most useful for character devices, pipes, and sockets.
+   Whether it also works on regular files and block devices is platform
+   dependent.
+
+   There are three modern alternatives to non-blocking I/O:
+     - use select() or poll() followed by read() or write() if the descriptor
+       is ready,
+     - call read() or write() in separate threads,
+     - use <aio.h> interfaces.  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Return 1 if I/O to the descriptor DESC is currently non-blocking, 0
+   it is blocking, or -1 with errno set if fd is invalid or blocking
+   status cannot be determined (such as with sockets on mingw).  */
+extern int get_nonblocking_flag (int desc);
+
+/* Specify the non-blocking flag for the descriptor DESC.
+   Return 0 upon success, or -1 with errno set upon failure.
+   The default depends on the presence of the O_NONBLOCK flag for files
+   or pipes opened with open() or on the presence of the SOCK_NONBLOCK
+   flag for sockets.  */
+extern int set_nonblocking_flag (int desc, bool value);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NONBLOCKING_H */
diff --git a/gnulib/import/sys_ioctl.in.h b/gnulib/import/sys_ioctl.in.h
new file mode 100644 (file)
index 0000000..7f1cdc8
--- /dev/null
@@ -0,0 +1,79 @@
+/* Substitute for and wrapper around <sys/ioctl.h>.
+   Copyright (C) 2008-2022 Free Software Foundation, Inc.
+
+   This file is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   This file is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#ifndef _@GUARD_PREFIX@_SYS_IOCTL_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_SYS_IOCTL_H@
+# @INCLUDE_NEXT@ @NEXT_SYS_IOCTL_H@
+#endif
+
+#ifndef _@GUARD_PREFIX@_SYS_IOCTL_H
+#define _@GUARD_PREFIX@_SYS_IOCTL_H
+
+/* AIX 5.1 and Solaris 10 declare ioctl() in <unistd.h> and in <stropts.h>,
+   but not in <sys/ioctl.h>.
+   Haiku declares ioctl() in <unistd.h>, but not in <sys/ioctl.h>.
+   But avoid namespace pollution on glibc systems.  */
+#ifndef __GLIBC__
+# include <unistd.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
+/* Declare overridden functions.  */
+
+#if @GNULIB_IOCTL@
+# if @REPLACE_IOCTL@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ioctl
+#   define ioctl rpl_ioctl
+#  endif
+_GL_FUNCDECL_RPL (ioctl, int,
+                  (int fd, int request, ... /* {void *,char *} arg */));
+_GL_CXXALIAS_RPL (ioctl, int,
+                  (int fd, int request, ... /* {void *,char *} arg */));
+# else
+#  if @SYS_IOCTL_H_HAVE_WINSOCK2_H@ || 1
+_GL_FUNCDECL_SYS (ioctl, int,
+                  (int fd, int request, ... /* {void *,char *} arg */));
+#  endif
+_GL_CXXALIAS_SYS (ioctl, int,
+                  (int fd, int request, ... /* {void *,char *} arg */));
+# endif
+_GL_CXXALIASWARN (ioctl);
+#elif @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+# undef ioctl
+# define ioctl ioctl_used_without_requesting_gnulib_module_ioctl
+#elif defined GNULIB_POSIXCHECK
+# undef ioctl
+# if HAVE_RAW_DECL_IOCTL
+_GL_WARN_ON_USE (ioctl, "ioctl does not portably work on sockets - "
+                 "use gnulib module ioctl for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_SYS_IOCTL_H */
+#endif /* _@GUARD_PREFIX@_SYS_IOCTL_H */
index 9b0a95500e8d965366f7e1fcbdee2381dd5df598..a675e877645feaed5c16981f6399fec477d3dde7 100755 (executable)
@@ -60,6 +60,7 @@ IMPORTED_GNULIB_MODULES="\
     mkdtemp \
     mkostemp \
     netdb \
+    nonblocking \
     pathmax \
     rawmemchr \
     readlink \