From ab4cdff6852fd5fe26ee3ad588f0200952841ffe Mon Sep 17 00:00:00 2001 From: Mohamed Abbas Date: Fri, 28 Jan 2011 12:31:30 +0100 Subject: [PATCH] task: Pass exit code to the exit callback --- include/task.h | 2 +- plugins/ntpd.c | 3 ++- plugins/vpn.c | 2 +- plugins/vpn.h | 2 +- src/task.c | 12 ++++++++---- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/include/task.h b/include/task.h index f608c7e..bde2a29 100644 --- a/include/task.h +++ b/include/task.h @@ -37,7 +37,7 @@ extern "C" { struct connman_task; typedef void (* connman_task_exit_t) (struct connman_task *task, - void *user_data); + int exit_code, void *user_data); typedef void (* connman_task_notify_t) (struct connman_task *task, DBusMessage *message, void *user_data); diff --git a/plugins/ntpd.c b/plugins/ntpd.c index 731fa46..3ee2ad8 100644 --- a/plugins/ntpd.c +++ b/plugins/ntpd.c @@ -109,7 +109,8 @@ static connman_bool_t ntpd_running(void) return ret; } -static void ntpdate_died(struct connman_task *task, void *user_data) +static void ntpdate_died(struct connman_task *task, + int exit_code, void *user_data) { struct ntpdate_task *ntpdate = user_data; diff --git a/plugins/vpn.c b/plugins/vpn.c index 278e0ea..e1b6404 100644 --- a/plugins/vpn.c +++ b/plugins/vpn.c @@ -102,7 +102,7 @@ static int kill_tun(char *tun_name) return 0; } -void vpn_died(struct connman_task *task, void *user_data) +void vpn_died(struct connman_task *task, int exit_code, void *user_data) { struct connman_provider *provider = user_data; struct vpn_data *data = connman_provider_get_data(provider); diff --git a/plugins/vpn.h b/plugins/vpn.h index b2afff5..86e1f73 100644 --- a/plugins/vpn.h +++ b/plugins/vpn.h @@ -38,4 +38,4 @@ struct vpn_driver { int vpn_register(const char *name, struct vpn_driver *driver, const char *program); void vpn_unregister(const char *provider_name); -void vpn_died(struct connman_task *task, void *user_data); +void vpn_died(struct connman_task *task, int exit_code, void *user_data); diff --git a/src/task.c b/src/task.c index 541106c..a74c728 100644 --- a/src/task.c +++ b/src/task.c @@ -246,11 +246,15 @@ int connman_task_set_notify(struct connman_task *task, const char *member, static void task_died(GPid pid, gint status, gpointer user_data) { struct connman_task *task = user_data; + int exit_code; - if (WIFEXITED(status)) - DBG("task %p exit status %d", task, WEXITSTATUS(status)); - else + if (WIFEXITED(status)) { + exit_code = WEXITSTATUS(status); + DBG("task %p exit status %d", task, exit_code); + } else { + exit_code = 0; DBG("task %p signal %d", task, WTERMSIG(status)); + } g_spawn_close_pid(pid); task->pid = -1; @@ -258,7 +262,7 @@ static void task_died(GPid pid, gint status, gpointer user_data) task->child_watch = 0; if (task->exit_func) - task->exit_func(task, task->exit_data); + task->exit_func(task, exit_code, task->exit_data); } static void task_setup(gpointer user_data) -- 2.7.4