When stopping, stop services that need our provide as well, #79.

This commit is contained in:
Roy Marples 2008-05-12 23:17:45 +00:00
parent 6d5d655b52
commit a89171ee9b

View File

@ -103,6 +103,7 @@ static RC_STRINGLIST *types_nu = NULL;
static RC_STRINGLIST *types_nua = NULL; static RC_STRINGLIST *types_nua = NULL;
static RC_STRINGLIST *types_m = NULL; static RC_STRINGLIST *types_m = NULL;
static RC_STRINGLIST *types_mua = NULL; static RC_STRINGLIST *types_mua = NULL;
static RC_STRINGLIST *types_p = NULL;
#ifdef __linux__ #ifdef __linux__
static void (*selinux_run_init_old)(void); static void (*selinux_run_init_old)(void);
@ -335,6 +336,7 @@ static void cleanup(void)
rc_stringlist_free(types_nua); rc_stringlist_free(types_nua);
rc_stringlist_free(types_m); rc_stringlist_free(types_m);
rc_stringlist_free(types_mua); rc_stringlist_free(types_mua);
rc_stringlist_free(types_p);
rc_plugin_unload(); rc_plugin_unload();
rc_deptree_free(deptree); rc_deptree_free(deptree);
@ -649,6 +651,9 @@ static void setup_types(void)
rc_stringlist_add(types_mua, "needsme"); rc_stringlist_add(types_mua, "needsme");
rc_stringlist_add(types_mua, "usesme"); rc_stringlist_add(types_mua, "usesme");
rc_stringlist_add(types_mua, "beforeme"); rc_stringlist_add(types_mua, "beforeme");
types_p = rc_stringlist_new();
rc_stringlist_add(types_p, "iprovide");
} }
static bool in_list(RC_STRINGLIST *list, char *string) static bool in_list(RC_STRINGLIST *list, char *string)
@ -947,9 +952,15 @@ static void svc_stop(bool deps)
if (! types_m) if (! types_m)
setup_types(); setup_types();
tmplist = NULL; tmplist = rc_deptree_depends(deptree, types_p, applet_list,
services = rc_deptree_depends(deptree, types_m, applet_list, runlevel, 0);
if (!tmplist)
tmplist = rc_stringlist_new();
rc_stringlist_add(tmplist, applet);
services = rc_deptree_depends(deptree, types_m, tmplist,
runlevel, depoptions); runlevel, depoptions);
rc_stringlist_free(tmplist);
tmplist = NULL;
if (services) { if (services) {
TAILQ_FOREACH_REVERSE(svc, services, rc_stringlist, entries) { TAILQ_FOREACH_REVERSE(svc, services, rc_stringlist, entries) {
state = rc_service_state(svc->value); state = rc_service_state(svc->value);