| #include <stdlib.h> |
| #include <string.h> |
| #include <stdio.h> |
| #include <sys/socket.h> |
| #include <sys/un.h> |
| #include <errno.h> |
| |
| int main() { |
| int listen_fd; |
| struct sockaddr_un addr; |
| |
| listen_fd = socket (PF_UNIX, SOCK_STREAM, 0); |
| |
| if (listen_fd < 0) |
| { |
| fprintf (stderr, "socket() failed: %s\n", strerror (errno)); |
| exit (1); |
| } |
| |
| memset (&addr, '\0', sizeof (addr)); |
| addr.sun_family = AF_UNIX; |
| strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test"); |
| addr.sun_path[0] = '\0'; /* this is what makes it abstract */ |
| |
| if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) |
| { |
| fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", |
| strerror (errno)); |
| exit (1); |
| } |
| else |
| exit (0); |
| } |