ioctl: Move autoconf macro to a .m4 file.
authorBruno Haible <bruno@clisp.org>
Mon, 19 Apr 2010 20:24:13 +0000 (22:24 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 19 Apr 2010 20:24:13 +0000 (22:24 +0200)
ChangeLog
m4/ioctl.m4 [new file with mode: 0644]
modules/ioctl

index 4a6720b..0d34f58 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-04-19  Bruno Haible  <bruno@clisp.org>
+
+       ioctl: Move autoconf macro to a .m4 file.
+       * m4/ioctl.m4: New file, extracted from modules/ioctl.
+       * modules/ioctl (Files): Add it.
+       (configure.ac): Simply invoke gl_FUNC_IOCTL.
+       Reported by Ian Beckwith <ianb@erislabs.net>.
+
 2010-04-18  Andreas Gruenbacher  <agruen@suse.de>
             Bruno Haible  <bruno@clisp.org>
 
diff --git a/m4/ioctl.m4 b/m4/ioctl.m4
new file mode 100644 (file)
index 0000000..4a0a99f
--- /dev/null
@@ -0,0 +1,38 @@
+# ioctl.m4 serial 1
+dnl Copyright (C) 2008-2010 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_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.
+    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
+])
index 2ad0b7a..5ba70ed 100644 (file)
@@ -4,6 +4,7 @@ ioctl() function: issue device specific requests on files, devices, or sockets.
 Files:
 lib/ioctl.c
 lib/w32sock.h
+m4/ioctl.m4
 
 Depends-on:
 sys_ioctl
@@ -11,35 +12,7 @@ sys_socket
 errno
 
 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.
-  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_FUNC_IOCTL
 gl_SYS_IOCTL_MODULE_INDICATOR([ioctl])
 
 Makefile.am: