diff options
| author | Roy Marples <roy@marples.name> | 2007-10-15 11:17:57 +0000 | 
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2007-10-15 11:17:57 +0000 | 
| commit | f95e75f0e9fece41b8b15c0d810f3ce7561937b8 (patch) | |
| tree | ff960fadeb44b75dd5a3e8a886bbc778092b6845 | |
| parent | 8ec450eff77a20a66c027d6f9763262614593d64 (diff) | |
| download | openrc-f95e75f0e9fece41b8b15c0d810f3ce7561937b8.tar.xz | |
rc-status now orders services in start order, #195630
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | src/rc-status.c | 17 | 
2 files changed, 20 insertions, 1 deletions
@@ -1,6 +1,10 @@  # ChangeLog for Gentoo System Intialization ("rc") scripts  # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPLv2 +  15 Oct 2007; Roy Marples <uberlord@gentoo.org>: + +    rc-status now orders services in start order, #195630 +  * baselayout-2.0.0_rc5 (11 Oct 2007)    11 Oct 2007; Roy Marples <uberlord@gentoo.org>: diff --git a/src/rc-status.c b/src/rc-status.c index 77654c25..0db3c905 100644 --- a/src/rc-status.c +++ b/src/rc-status.c @@ -19,6 +19,8 @@  #define APPLET "rc-status" +static char const *types[] = { "ineed", "iuse", "iafter", NULL }; +  static void print_level (char *level)  {  	printf ("Runlevel: %s%s%s\n", @@ -81,8 +83,10 @@ static const char * const longopts_help[] = {  int rc_status (int argc, char **argv)  { +	rc_depinfo_t *deptree = NULL;  	char **levels = NULL;  	char **services = NULL; +	char **ordered = NULL;  	char *level;  	char *service;  	int opt; @@ -135,15 +139,26 @@ int rc_status (int argc, char **argv)  		free (level);  	} +	/* Output the services in the order in which they would start */ +	deptree = rc_deptree_load ();  	STRLIST_FOREACH (levels, level, i) {  		print_level (level);  		services = rc_services_in_runlevel (level); +		if (deptree) { +			ordered = rc_deptree_depends (deptree, (char **) types, services, +										  level, RC_DEP_STRICT | RC_DEP_START); +			rc_strlist_free (services); +			services = ordered; +			ordered = NULL; +		}  		STRLIST_FOREACH (services, service, j) -			print_service (service); +			if (rc_service_in_runlevel (service, level)) +				print_service (service);  		rc_strlist_free (services);  	}  	rc_strlist_free (levels); +	rc_deptree_free (deptree);  	return (EXIT_SUCCESS);  }  | 
