1 #include <stdlib.h> 2 #include <string.h> 3 #include <stdio.h> 4 #include <sys/socket.h> 5 #include <sys/un.h> 6 #include <errno.h> 7 8 int main() { 9 int listen_fd; 10 struct sockaddr_un addr; 11 12 listen_fd = socket (PF_UNIX, SOCK_STREAM, 0); 13 14 if (listen_fd < 0) 15 { 16 fprintf (stderr, "socket() failed: %s\n", strerror (errno)); 17 exit (1); 18 } 19 20 memset (&addr, '\0', sizeof (addr)); 21 addr.sun_family = AF_UNIX; 22 strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test"); 23 addr.sun_path[0] = '\0'; /* this is what makes it abstract */ 24 25 if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) 26 { 27 fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", 28 strerror (errno)); 29 exit (1); 30 } 31 else 32 exit (0); 33 }