1 dnl AC_ABSTRACT_SOCKET_TEST(ACTION_IF_FOUND, ACTION_IF_NOT_FOUND)
2 dnl test if a system supports the abstract socket namespace
4 AC_DEFUN([AC_ABSTRACT_SOCKET_TEST], [
5 AC_MSG_CHECKING(abstract sockets)
7 AC_RUN_IFELSE([AC_LANG_PROGRAM(
13 #include <sys/socket.h>
14 #include <sys/types.h>
19 #define ABS_SUN_LEN(s, path) (strlen(path) + 1 + (size_t)(((struct sockaddr_un *)NULL)->sun_path))
21 struct sockaddr_un sock;
23 char *name = "/ecore/dbus/abstract/test";
25 sock.sun_family = AF_UNIX;
26 snprintf(sock.sun_path, sizeof(sock.sun_path), ".%s", name);
27 sock.sun_path[0] = '\0';
28 fd = socket(PF_UNIX, SOCK_STREAM, 0);
29 if (bind(fd, (struct sockaddr *)&sock, ABS_SUN_LEN(&sock, name)) < 0)
31 printf("Failed to bind to abstract socket.\n");
35 printf ("connected\n");