Blame m4/ioctl.m4

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