diff options
| author | Roy Marples <roy@marples.name> | 2007-12-08 12:10:45 +0000 | 
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2007-12-08 12:10:45 +0000 | 
| commit | 2c3c27e251231264b0eb37c968d36f0b4fd3c54b (patch) | |
| tree | 0a116d63101171311c1b160afe373b1a4e993232 /src | |
| parent | 9a6cfc0a9b455d463ce469fc59beb880ecce5294 (diff) | |
| download | openrc-2c3c27e251231264b0eb37c968d36f0b4fd3c54b.tar.xz | |
Mirror the action of rc-update in baselayout-1, with the exception of adding to the currnet runlevel if no runlevel specified.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rc-update.c | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/src/rc-update.c b/src/rc-update.c index 04f6cdff..ddec0066 100644 --- a/src/rc-update.c +++ b/src/rc-update.c @@ -243,26 +243,33 @@ int rc_update (int argc, char **argv)  		else {  			ssize_t num_updated = 0;  			ssize_t (*actfunc)(const char *, const char *); -			if (action & DOADD) + +			if (action & DOADD) {  				actfunc = add; -			else if (action & DODELETE) +				if (! runlevels) +					rc_strlist_add (&runlevels, rc_runlevel_get ()); +			} else if (action & DODELETE) {  				actfunc = delete; -			else +				if (! runlevels) +					runlevels = rc_runlevel_list (); +			} else  				eerrorx ("%s: invalid action", applet); +  			if (! runlevels) -				runlevels = rc_runlevel_list (); +				eerrorx ("%s: no runlevels found", applet); +  			STRLIST_FOREACH (runlevels, runlevel, i) {  				ssize_t ret = actfunc (runlevel, service);  				if (ret < 0)  					retval = EXIT_FAILURE;  				num_updated += ret;  			} -			if (retval == EXIT_SUCCESS && num_updated == 0) + +			if (retval == EXIT_SUCCESS && num_updated == 0 && action & DODELETE)  				ewarnx ("%s: service `%s' not found in any of the specified runlevels", applet, service);  		}  	}  	rc_strlist_free (runlevels); -  	return (retval);  } | 
