mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-08 17:18:27 +02:00
2007-07-24 Richard Hughes <richard@hughsie.com>
* dbus/dbus-spawn.c: (read_data), (_dbus_babysitter_get_child_exit_status): * dbus/dbus-spawn.h: Add a function so we can get access to the exit status of the launch helper. By providing the return code and not the error we can leave the 'what does this mean?' to the bus launch code and not include it in the dbus directory.
This commit is contained in:
parent
ee10721fdb
commit
ab25c53696
3 changed files with 38 additions and 0 deletions
11
ChangeLog
11
ChangeLog
|
|
@ -1,3 +1,14 @@
|
|||
2007-07-24 Richard Hughes <richard@hughsie.com>
|
||||
|
||||
* dbus/dbus-spawn.c: (read_data),
|
||||
(_dbus_babysitter_get_child_exit_status):
|
||||
* dbus/dbus-spawn.h:
|
||||
Add a function so we can get access to the exit status of the launch
|
||||
helper.
|
||||
By providing the return code and not the error we can leave the
|
||||
'what does this mean?' to the bus launch code and not include it in the
|
||||
dbus directory.
|
||||
|
||||
2007-07-24 Richard Hughes <richard@hughsie.com>
|
||||
|
||||
* bus/activation-exit-codes.h:
|
||||
|
|
|
|||
|
|
@ -417,6 +417,7 @@ read_data (DBusBabysitter *sitter,
|
|||
{
|
||||
sitter->have_child_status = TRUE;
|
||||
sitter->status = arg;
|
||||
sitter->errnum = WEXITSTATUS (sitter->status);
|
||||
_dbus_verbose ("recorded child status exited = %d signaled = %d exitstatus = %d termsig = %d\n",
|
||||
WIFEXITED (sitter->status), WIFSIGNALED (sitter->status),
|
||||
WEXITSTATUS (sitter->status), WTERMSIG (sitter->status));
|
||||
|
|
@ -622,6 +623,30 @@ _dbus_babysitter_get_child_exited (DBusBabysitter *sitter)
|
|||
return sitter->socket_to_babysitter < 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the exit status of the child. We do this so implimentation specific
|
||||
* detail is not cluttering up dbus, for example the system laucher code.
|
||||
*
|
||||
* @param sitter the babysitter
|
||||
* @param status the returned status code
|
||||
* @returns #FALSE on failure
|
||||
*/
|
||||
dbus_bool_t
|
||||
_dbus_babysitter_get_child_exit_status (DBusBabysitter *sitter, int *status)
|
||||
{
|
||||
if (!_dbus_babysitter_get_child_exited (sitter))
|
||||
_dbus_assert_not_reached ("Child has not exited");
|
||||
|
||||
if (sitter->errnum != WEXITSTATUS (sitter->status))
|
||||
_dbus_assert_not_reached ("Status is not exit!");
|
||||
|
||||
if (!sitter->have_child_status)
|
||||
_dbus_assert_not_reached ("Not a child!");
|
||||
|
||||
*status = sitter->status;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the #DBusError with an explanation of why the spawned
|
||||
* child process exited (on a signal, or whatever). If
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@ void _dbus_babysitter_kill_child (DBusBabysitter *si
|
|||
dbus_bool_t _dbus_babysitter_get_child_exited (DBusBabysitter *sitter);
|
||||
void _dbus_babysitter_set_child_exit_error (DBusBabysitter *sitter,
|
||||
DBusError *error);
|
||||
dbus_bool_t _dbus_babysitter_get_child_exit_status (DBusBabysitter *sitter,
|
||||
int *status);
|
||||
dbus_bool_t _dbus_babysitter_set_watch_functions (DBusBabysitter *sitter,
|
||||
DBusAddWatchFunction add_function,
|
||||
DBusRemoveWatchFunction remove_function,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue