12feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld#include <stdlib.h> 22feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld#include <string.h> 32feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld#include <stdio.h> 42feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld#include <sys/socket.h> 52feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld#include <sys/un.h> 62feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld#include <errno.h> 72feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld 82feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeldint main() { 92feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld int listen_fd; 102feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld struct sockaddr_un addr; 112feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld 122feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld listen_fd = socket (PF_UNIX, SOCK_STREAM, 0); 132feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld 142feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld if (listen_fd < 0) 152feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld { 162feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld fprintf (stderr, "socket() failed: %s\n", strerror (errno)); 172feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld exit (1); 182feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld } 192feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld 202feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld memset (&addr, '\0', sizeof (addr)); 212feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld addr.sun_family = AF_UNIX; 222feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test"); 232feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld addr.sun_path[0] = '\0'; /* this is what makes it abstract */ 242feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld 252feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) 262feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld { 272feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", 282feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld strerror (errno)); 292feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld exit (1); 302feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld } 312feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld else 322feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld exit (0); 332feb3e2e653be1ef1292b92036f919bb990586c9Frank Osterfeld}