Files:
lib/ioctl.c
lib/w32sock.h
+m4/ioctl.m4
Depends-on:
sys_ioctl
-sys_socket
-errno
+sys_socket [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
+errno [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
+fd-hook [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
+msvc-nothrow [test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1]
configure.ac:
-AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])
-AC_REQUIRE([gl_HEADER_SYS_SOCKET])
-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.
+gl_FUNC_IOCTL
+if test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1; then
AC_LIBOBJ([ioctl])
- gl_REPLACE_SYS_IOCTL_H
-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>]],
- [[extern 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
- AC_LIBOBJ([ioctl])
- gl_REPLACE_SYS_IOCTL_H
- fi
fi
gl_SYS_IOCTL_MODULE_INDICATOR([ioctl])