Blame gnulib/m4/ioctl.m4

Packit Service a2ae7a
# ioctl.m4 serial 5
Packit Service a2ae7a
dnl Copyright (C) 2008-2019 Free Software Foundation, Inc.
Packit Service a2ae7a
dnl This file is free software; the Free Software Foundation
Packit Service a2ae7a
dnl gives unlimited permission to copy and/or distribute it,
Packit Service a2ae7a
dnl with or without modifications, as long as this notice is preserved.
Packit Service a2ae7a
Packit Service a2ae7a
AC_DEFUN([gl_FUNC_IOCTL],
Packit Service a2ae7a
[
Packit Service a2ae7a
  AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])
Packit Service a2ae7a
  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Packit Service a2ae7a
  HAVE_IOCTL=1
Packit Service a2ae7a
  if test "$ac_cv_header_winsock2_h" = yes; then
Packit Service a2ae7a
    dnl Even if the 'socket' module is not used here, another part of the
Packit Service a2ae7a
    dnl application may use it and pass file descriptors that refer to
Packit Service a2ae7a
    dnl sockets to the ioctl() function. So enable the support for sockets.
Packit Service a2ae7a
    HAVE_IOCTL=0
Packit Service a2ae7a
  else
Packit Service a2ae7a
    AC_CHECK_FUNCS([ioctl])
Packit Service a2ae7a
    dnl On glibc systems, the second parameter is 'unsigned long int request',
Packit Service a2ae7a
    dnl not 'int request'. We cannot simply cast the function pointer, but
Packit Service a2ae7a
    dnl instead need a wrapper.
Packit Service a2ae7a
    AC_CACHE_CHECK([for ioctl with POSIX signature],
Packit Service a2ae7a
      [gl_cv_func_ioctl_posix_signature],
Packit Service a2ae7a
      [AC_COMPILE_IFELSE(
Packit Service a2ae7a
         [AC_LANG_PROGRAM(
Packit Service a2ae7a
            [[#include <sys/ioctl.h>
Packit Service a2ae7a
              /* On some platforms, ioctl() is declared in <unistd.h>.  */
Packit Service a2ae7a
              #include <unistd.h>
Packit Service a2ae7a
            ]],
Packit Service a2ae7a
            [[extern
Packit Service a2ae7a
              #ifdef __cplusplus
Packit Service a2ae7a
              "C"
Packit Service a2ae7a
              #endif
Packit Service a2ae7a
              int ioctl (int, int, ...);
Packit Service a2ae7a
            ]])
Packit Service a2ae7a
         ],
Packit Service a2ae7a
         [gl_cv_func_ioctl_posix_signature=yes],
Packit Service a2ae7a
         [gl_cv_func_ioctl_posix_signature=no])
Packit Service a2ae7a
      ])
Packit Service a2ae7a
    if test $gl_cv_func_ioctl_posix_signature != yes; then
Packit Service a2ae7a
      REPLACE_IOCTL=1
Packit Service a2ae7a
    fi
Packit Service a2ae7a
  fi
Packit Service a2ae7a
])