bus: Assign a serial number for messages from the driver
[platform/upstream/dbus.git] / test / name-test / test-autolaunch.c
1 #include "config.h"
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #ifdef HAVE_UNISTD_H
7 #include <unistd.h>
8 #endif
9
10 #include <dbus/dbus.h>
11 #include "dbus/dbus-internals.h"
12 #include "dbus/dbus-sysdeps.h"
13
14 int
15 main (int argc, char *argv[])
16 {
17   DBusConnection *conn = NULL;
18   DBusError error;
19   DBusGUID uuid;
20
21   dbus_setenv ("DBUS_SESSION_BUS_ADDRESS", NULL);
22
23   dbus_error_init (&error);
24
25   if (!_dbus_read_local_machine_uuid (&uuid, FALSE, &error))
26     {
27       /* We can't expect autolaunching to work in this situation */
28       fprintf (stderr, "*** %s\n", error.message);
29       dbus_error_free (&error);
30       return 0;
31     }
32
33   conn = dbus_bus_get (DBUS_BUS_SESSION, &error);
34
35 #ifdef DBUS_ENABLE_X11_AUTOLAUNCH
36   /* If X11 autolaunch was enabled, we expect dbus-launch to have worked. */
37   if (_dbus_getenv ("DISPLAY") != NULL && dbus_error_is_set (&error))
38     {
39       fprintf (stderr, "*** Failed to autolaunch session bus: %s\n",
40                error.message);
41       dbus_error_free (&error);
42       return 1;
43     }
44 #endif
45
46   /* We don't necessarily expect it to *work* without X (although it might -
47    * for instance on Mac OS it might have used launchd). Just check that the
48    * results are consistent. */
49
50   if (dbus_error_is_set (&error) && conn != NULL)
51     {
52       fprintf (stderr, "*** Autolaunched session bus, but an error was set!\n");
53       return 1;
54     }
55
56   if (!dbus_error_is_set (&error) && conn == NULL)
57     {
58       fprintf (stderr, "*** Failed to autolaunch session bus but no error was set\n");
59       return 1;
60     }
61
62   return 0;
63 }