New module 'unictype/joininggroup-all'.
[gnulib.git] / m4 / afunix.m4
index 8095ae9..46b3bf3 100644 (file)
@@ -1,4 +1,4 @@
-# afunix.m4 serial 2
+# afunix.m4 serial 5
 dnl Copyright (C) 2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -38,11 +38,16 @@ AC_DEFUN([gl_SOCKET_AFUNIX],
       [Define to 1 if <sys/socket.h> defines SCM_RIGHTS.])
   fi
 
+  dnl Persuade AIX 5.2 <sys/socket.h> to declare CMSG_SPACE, CMSG_LEN.
+  AC_DEFINE([_LINUX_SOURCE_COMPAT], [1],
+    [Define in order to get some macros on AIX systems.])
+
   AC_MSG_CHECKING([for UNIX domain sockets SCM_RIGHTS that behave in BSD4.4 way])
   AC_CACHE_VAL([gl_cv_socket_unix_scm_rights_bsd44_way],
     [AC_COMPILE_IFELSE(
        [AC_LANG_PROGRAM(
           [[#include <sys/types.h>
+            #include <stddef.h>
             #ifdef HAVE_SYS_SOCKET_H
             #include <sys/socket.h>
             #endif
@@ -57,7 +62,6 @@ AC_DEFUN([gl_SOCKET_AFUNIX],
               struct cmsghdr *cmsg;
               int myfds[1] = {0};
               char buf[CMSG_SPACE (sizeof (myfds))];
-              int *fdptr;
 
               msg.msg_control = buf;
               msg.msg_controllen = sizeof buf;
@@ -109,4 +113,31 @@ AC_DEFUN([gl_SOCKET_AFUNIX],
     AC_DEFINE([HAVE_UNIXSOCKET_SCM_RIGHTS_BSD43_WAY], [1],
       [Define to 1 if fd can be sent/received in the BSD4.3 way.])
   fi
+
+  AC_MSG_CHECKING([for UNIX domain sockets recvmsg() MSG_CMSG_CLOEXEC flag])
+  AC_CACHE_VAL([gl_cv_socket_unix_msg_cmsg_cloexec],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+            #ifdef HAVE_SYS_SOCKET_H
+            #include <sys/socket.h>
+            #endif
+            #ifdef HAVE_SYS_UN_H
+            #include <sys/un.h>
+            #endif
+            #ifdef HAVE_WINSOCK2_H
+            #include <winsock2.h>
+            #endif
+            ]],
+            [[int flags = MSG_CMSG_CLOEXEC;
+              if (&flags) return 0;
+            ]])],
+       [gl_cv_socket_unix_msg_cmsg_cloexec=yes],
+       [gl_cv_socket_unix_msg_cmsg_cloexec=no])
+    ])
+  AC_MSG_RESULT([$gl_cv_socket_unix_msg_cmsg_cloexec])
+  if test $gl_cv_socket_unix_msg_cmsg_cloexec = yes; then
+    AC_DEFINE([HAVE_MSG_CMSG_CLOEXEC], [1],
+      [Define to 1 if recvmsg could be specified with MSG_CMSG_CLOEXEC.])
+  fi
 ])