DBusWatchList *watches;
DBusWatch *sitter_watch;
- DBusBabysitterFinishedFunc finished_cb;
- void *finished_data;
dbus_bool_t have_spawn_errno;
int spawn_errno;
return sitter;
}
-static void
-close_socket_to_babysitter (DBusBabysitter *sitter)
-{
- _dbus_verbose ("Closing babysitter\n");
-
- if (sitter->sitter_watch != NULL)
- {
- _dbus_assert (sitter->watches != NULL);
- _dbus_watch_list_remove_watch (sitter->watches, sitter->sitter_watch);
- _dbus_watch_invalidate (sitter->sitter_watch);
- _dbus_watch_unref (sitter->sitter_watch);
- sitter->sitter_watch = NULL;
- }
-
- if (sitter->socket_to_babysitter != -1)
- {
- _dbus_close_socket (sitter->socket_to_babysitter, NULL);
- sitter->socket_to_babysitter = -1;
- }
-}
-
/**
* Decrement the reference count on the babysitter object.
*
if (sitter->refcount == 0)
{
- close_socket_to_babysitter (sitter);
+ if (sitter->socket_to_babysitter != -1)
+ {
+ _dbus_close_socket (sitter->socket_to_babysitter, NULL);
+ sitter->socket_to_babysitter = -1;
+ }
if (sitter->socket_to_main != -1)
{
*/
PING();
- close_socket_to_babysitter (sitter);
+ _dbus_close_socket (sitter->socket_to_babysitter, NULL);
PING();
-
- if (_dbus_babysitter_get_child_exited (sitter) &&
- sitter->finished_cb != NULL)
- {
- sitter->finished_cb (sitter, sitter->finished_data);
- sitter->finished_cb = NULL;
- }
+ sitter->socket_to_babysitter = -1;
return TRUE;
}
int n = 0;
char *buf;
char *p;
-
+ const char *ptr;
+
if (!strings || !strings[0])
return 0;
for (i = 0; strings[i]; i++)
babysitter (void *parameter)
{
DBusBabysitter *sitter = (DBusBabysitter *) parameter;
-
+ int fd;
PING();
_dbus_babysitter_ref (sitter);
PING();
if (!_dbus_watch_list_add_watch (sitter->watches, sitter->sitter_watch))
{
- /* we need to free it early so the destructor won't try to remove it
- * without it having been added, which DBusLoop doesn't allow */
- _dbus_watch_invalidate (sitter->sitter_watch);
- _dbus_watch_unref (sitter->sitter_watch);
- sitter->sitter_watch = NULL;
-
_DBUS_SET_OOM (error);
goto out0;
}
return FALSE;
}
-void
-_dbus_babysitter_set_result_function (DBusBabysitter *sitter,
- DBusBabysitterFinishedFunc finished,
- void *user_data)
-{
- sitter->finished_cb = finished;
- sitter->finished_data = user_data;
-}
-
#ifdef DBUS_BUILD_TESTS
#define LIVE_CHILDREN(sitter) ((sitter)->child_handle != NULL)