diff options
Diffstat (limited to 'src/runscript.c')
| -rw-r--r-- | src/runscript.c | 22 | 
1 files changed, 17 insertions, 5 deletions
| diff --git a/src/runscript.c b/src/runscript.c index e817d0c8..876cddc7 100644 --- a/src/runscript.c +++ b/src/runscript.c @@ -573,9 +573,6 @@ static void svc_start (bool deps)  	rc_plugin_run (rc_hook_service_start_in, applet);  	hook_out = rc_hook_service_start_out; -	if (rc_is_env ("RC_STRICT_DEPEND", "yes")) -		depoptions |= RC_DEP_STRICT; -  	if (rc_is_env ("IN_HOTPLUG", "1") || in_background) {  		if (! rc_service_state (service, rc_service_inactive) &&  			! rc_service_state (service, rc_service_stopped)) @@ -598,6 +595,12 @@ static void svc_start (bool deps)  	make_exclusive (service); +	if (rc_is_env ("RC_DEPEND_STRICT", "yes")) +		depoptions |= RC_DEP_STRICT; + +	if (rc_runlevel_starting ()) +		depoptions |= RC_DEP_START; +  	if (deps) {  		if (! deptree && ((deptree = rc_load_deptree ()) == NULL))  			eerrorx ("failed to load deptree"); @@ -828,9 +831,12 @@ static void svc_stop (bool deps)  		char *svc;  		int i; -		if (rc_is_env ("RC_STRICT_DEPEND", "yes")) +		if (rc_is_env ("RC_DEPEND_STRICT", "yes"))  			depoptions |= RC_DEP_STRICT; +		if (rc_runlevel_stopping ()) +			depoptions |= RC_DEP_STOP; +  		if (! deptree && ((deptree = rc_load_deptree ()) == NULL))  			eerrorx ("failed to load deptree"); @@ -1180,6 +1186,11 @@ int main (int argc, char **argv)  				   strcmp (optarg, "iafter") == 0 ||  				   strcmp (optarg, "ibefore") == 0 ||  				   strcmp (optarg, "iprovide") == 0) { +			int depoptions = RC_DEP_TRACE; + +			if (rc_is_env ("RC_DEPEND_STRICT", "yes")) +				depoptions |= RC_DEP_STRICT; +			  			if (! deptree && ((deptree = rc_load_deptree ()) == NULL))  				eerrorx ("failed to load deptree"); @@ -1188,7 +1199,8 @@ int main (int argc, char **argv)  			rc_strlist_free (svclist);  			svclist = rc_strlist_add (NULL, applet);  			rc_strlist_free (services); -			services = rc_get_depends (deptree, types, svclist, softlevel, 0); +			services = rc_get_depends (deptree, types, svclist, +									   softlevel, depoptions);  			STRLIST_FOREACH (services, svc, i)  				printf ("%s%s", i == 1 ? "" : " ", svc);  			printf ("\n"); | 
