Compare commits

...

2 Commits

Author SHA1 Message Date
Mike Frysinger
3c8e0749b7 sim: use gnulib to set nonblocking mode
Replace various custom ad-hoc fcntl/O_NONBLOCK implementations with
the gnulib nonblocking module.  This makes our code much tidier and
portable to other systems (e.g. Windows).
2024-01-01 18:23:28 -05:00
Mike Frysinger
e11ccde12b gnulib: import nonblocking module
This provides a portable API for managing O_NONBLOCK settings.
The sim will use this to replace its own incomplete shims.
2024-01-01 18:23:28 -05:00
21 changed files with 1428 additions and 213 deletions

View 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@

4
gnulib/aclocal.m4 vendored
View 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])

View File

@@ -123,6 +123,10 @@
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
@@ -271,6 +275,9 @@
/* 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
@@ -313,6 +320,9 @@
/* 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
@@ -707,6 +717,9 @@
/* 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
@@ -953,6 +966,9 @@
/* 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
@@ -1336,6 +1352,10 @@
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

435
gnulib/configure vendored
View File

@@ -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
@@ -27471,6 +27723,97 @@ fi
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
@@ -31104,6 +31447,54 @@ fi
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
@@ -32963,6 +33363,10 @@ fi
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

View 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

View 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)

92
gnulib/import/ioctl.c Normal file
View File

@@ -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

View File

@@ -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'
])
])

View 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

View 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

44
gnulib/import/m4/ioctl.m4 Normal file
View File

@@ -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
])

View File

@@ -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
])

View File

@@ -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])
])

163
gnulib/import/nonblocking.c Normal file
View File

@@ -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

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -60,6 +60,7 @@ IMPORTED_GNULIB_MODULES="\
mkdtemp \
mkostemp \
netdb \
nonblocking \
pathmax \
rawmemchr \
readlink \

View File

@@ -35,6 +35,8 @@
#include <linux/if_tun.h>
#endif
#include "nonblocking.h"
#ifdef HAVE_LINUX_IF_TUN_H
# define WITH_TUN 1
#else
@@ -567,8 +569,7 @@ bfin_emac_tap_init (struct hw *me)
return;
}
flags = fcntl (emac->tap, F_GETFL);
fcntl (emac->tap, F_SETFL, flags | O_NONBLOCK);
set_nonblocking_flag (emac->tap, true);
#endif
}

View File

@@ -37,6 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/time.h>
#include <sys/types.h>
#include "nonblocking.h"
#include "sim-main.h"
#include "sim-assert.h"
#include "sim-options.h"
@@ -253,17 +255,13 @@ connected_p (SIM_DESC sd)
return 0;
/* Set non-blocking i/o. */
#if defined(F_GETFL) && defined(O_NONBLOCK)
flags = fcntl (sockser_fd, F_GETFL);
flags |= O_NONBLOCK;
if (fcntl (sockser_fd, F_SETFL, flags) == -1)
if (set_nonblocking_flag (sockser_fd, true))
{
sim_io_eprintf (sd, "unable to set nonblocking i/o");
close (sockser_fd);
sockser_fd = -1;
return 0;
}
#endif
return 1;
}

View File

@@ -33,6 +33,8 @@
#undef open
#include "nonblocking.h"
#include "sim-main.h"
#include "sim-io.h"
#include "sim/callback.h"
@@ -347,23 +349,20 @@ sim_io_poll_read (SIM_DESC sd,
char *buf,
int sizeof_buf)
{
#if defined(O_NONBLOCK) && defined(F_GETFL) && defined(F_SETFL)
int fd = STATE_CALLBACK (sd)->fdmap[sim_io_fd];
int flags;
int status;
int nr_read;
int result;
STATE_CALLBACK (sd)->last_errno = 0;
/* get the old status */
flags = fcntl (fd, F_GETFL, 0);
if (flags == -1)
status = get_nonblocking_flag (fd);
if (status == -1)
{
perror ("sim_io_poll_read");
perror ("sim_io_read_stdin");
return 0;
}
/* temp, disable blocking IO */
status = fcntl (fd, F_SETFL, flags | O_NONBLOCK);
if (status == -1)
if (status == 0 && set_nonblocking_flag (fd, true) == -1)
{
perror ("sim_io_read_stdin");
return 0;
@@ -381,16 +380,12 @@ sim_io_poll_read (SIM_DESC sd,
STATE_CALLBACK (sd)->last_errno = errno;
}
/* return to regular vewing */
status = fcntl (fd, F_SETFL, flags);
if (status == -1)
if (status == 0 && set_nonblocking_flag (fd, false) == -1)
{
perror ("sim_io_read_stdin");
/* return 0; */
}
return result;
#else
return sim_io_read (sd, sim_io_fd, buf, sizeof_buf);
#endif
}
int

View File

@@ -26,6 +26,8 @@
#include <signal.h>
#include "nonblocking.h"
#include "psim.h"
#include "options.h"
#include "device.h" /* FIXME: psim should provide the interface */
@@ -42,11 +44,6 @@
#include "environ.h"
#if !defined(O_NONBLOCK) || !defined(F_GETFL) || !defined(F_SETFL)
#undef WITH_STDIO
#define WITH_STDIO DO_USE_STDIO
#endif
static psim *simulation = NULL;
@@ -150,22 +147,19 @@ sim_io_read_stdin(char *buf,
return sim_io_eof;
break;
case DONT_USE_STDIO:
#if defined(O_NONBLOCK) && defined(F_GETFL) && defined(F_SETFL)
{
/* check for input */
int flags;
int status;
int nr_read;
int result;
/* get the old status */
flags = fcntl(0, F_GETFL, 0);
if (flags == -1) {
status = get_nonblocking_flag (0);
if (status == -1) {
perror("sim_io_read_stdin");
return sim_io_eof;
}
/* temp, disable blocking IO */
status = fcntl(0, F_SETFL, flags | O_NONBLOCK);
if (status == -1) {
if (status == 0 && set_nonblocking_flag (0, true) == -1) {
perror("sim_io_read_stdin");
return sim_io_eof;
}
@@ -183,15 +177,13 @@ sim_io_read_stdin(char *buf,
result = sim_io_eof;
}
/* return to regular vewing */
status = fcntl(0, F_SETFL, flags);
if (status == -1) {
if (status == 0 && set_nonblocking_flag (0, false) == -1) {
perror("sim_io_read_stdin");
return sim_io_eof;
}
return result;
}
break;
#endif
default:
error("sim_io_read_stdin: invalid switch\n");
break;