summaryrefslogtreecommitdiff
path: root/src/3rd_party/dbus-1.7.8/cmake/modules/CheckForAbstractSockets.c
blob: 062b846c3923f4b6b858c2867fa55fcb75a95412 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#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);
}