29 #include "dbus-server-launchd.h" 
   39 #ifdef DBUS_ENABLE_LAUNCHD 
   43 #include "dbus-misc.h" 
   44 #include "dbus-server-socket.h" 
   45 #include "dbus-sysdeps-unix.h" 
   68 #ifdef DBUS_ENABLE_LAUNCHD 
   72     launch_data_t sockets_dict, checkin_response;
 
   73     launch_data_t checkin_request;
 
   74     launch_data_t listening_fd_array, listening_fd;
 
   75     launch_data_t environment_dict, environment_param;
 
   76     const char *launchd_socket_path, *display;
 
   81     _DBUS_ASSERT_ERROR_IS_CLEAR (error);
 
   83     if (launchd_socket_path == 
NULL || *launchd_socket_path == 
'\0')
 
   86                         "launchd's environment variable %s is empty, but should contain a socket path.\n", launchd_env_var);
 
  106     if ((checkin_request = launch_data_new_string (LAUNCH_KEY_CHECKIN)) == 
NULL)
 
  109                         "launch_data_new_string(\"%s\") Unable to create string.\n",
 
  114     if ((checkin_response = launch_msg (checkin_request)) == 
NULL)
 
  117                         "launch_msg(\"%s\") IPC failure: %s\n",
 
  118                         LAUNCH_KEY_CHECKIN, strerror (errno));
 
  122     if (LAUNCH_DATA_ERRNO == launch_data_get_type (checkin_response))
 
  125                         strerror (launch_data_get_errno (checkin_response)));
 
  130       launch_data_dict_lookup (checkin_response, LAUNCH_JOBKEY_SOCKETS);
 
  131     if (
NULL == sockets_dict)
 
  134                         "No sockets found to answer requests on!\n");
 
  139       launch_data_dict_lookup (sockets_dict, 
"unix_domain_listener");
 
  140     if (
NULL == listening_fd_array)
 
  143                         "No known sockets found to answer requests on!\n");
 
  147     if (launch_data_array_get_count (listening_fd_array) != 1)
 
  150                         "Expected 1 socket from launchd, got %d.\n",
 
  151                         launch_data_array_get_count (listening_fd_array));
 
  155     listening_fd = launch_data_array_get_index (listening_fd_array, 0);
 
  156     launchd_fd = launch_data_get_fd (listening_fd);
 
  162         _DBUS_ASSERT_ERROR_IS_SET (error);
 
  164   if (display == 
NULL || *display == 
'\0')
 
  166       environment_dict = launch_data_dict_lookup (checkin_response, LAUNCH_JOBKEY_USERENVIRONMENTVARIABLES);
 
  167       if (
NULL == environment_dict)
 
  169           _dbus_warn (
"Unable to retrieve user environment from launchd.");
 
  173           environment_param = launch_data_dict_lookup (environment_dict, 
"DISPLAY");
 
  174           if (
NULL == environment_param)
 
  176               _dbus_warn (
"Unable to retrieve DISPLAY from launchd.");
 
  180               display = launch_data_get_string(environment_param);
 
  204                     "address type 'launchd' requested, but launchd support not compiled in");