diff options
author | Roy Marples <roy@marples.name> | 2008-10-10 08:37:21 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-10-10 08:37:21 +0000 |
commit | d6da8e8c48feb8faf9287fc86fbbf0890c37a87c (patch) | |
tree | e6cdf21f0f3a3270b705fe14b876f92b14b38dbf /src/rc/rc-service.c | |
parent | 247766695cd7c5e8d83dff72f7eb7e6578bf57b8 (diff) |
sysinit is now a real runlevel that handles things like udev, dmesg and
mounting various bits in /dev and /sys.
init.sh JUST mounts /lib/rc/init.d (and /proc for Linux systems)
To make development of this easier we now return an empty RC_STRINGLIST
instead of a NULL for empty things.
If you don't have a udev init script installed, don't reboot your box OR
roll back to an older OpenRC version.
Diffstat (limited to 'src/rc/rc-service.c')
-rw-r--r-- | src/rc/rc-service.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/rc/rc-service.c b/src/rc/rc-service.c index 11b6b58f..ab3d47b2 100644 --- a/src/rc/rc-service.c +++ b/src/rc/rc-service.c @@ -58,7 +58,8 @@ static const char * const longopts_help[] = { }; #include "_usage.c" -int rc_service(int argc, char **argv) +int +rc_service(int argc, char **argv) { int opt; char *service; @@ -75,17 +76,21 @@ int rc_service(int argc, char **argv) case 'e': service = rc_service_resolve(optarg); opt = service ? EXIT_SUCCESS : EXIT_FAILURE; +#ifdef DEBUG_MEMORY free(service); +#endif return opt; /* NOTREACHED */ case 'l': list = rc_services_in_runlevel(NULL); - if (! list) + if (!TAILQ_FIRST(list)) return EXIT_FAILURE; rc_stringlist_sort(&list); TAILQ_FOREACH(s, list, entries) printf("%s\n", s->value); +#ifdef DEBUG_MEMORY rc_stringlist_free(list); +#endif return EXIT_SUCCESS; /* NOTREACHED */ case 'r': @@ -93,7 +98,9 @@ int rc_service(int argc, char **argv) if (!service) return EXIT_FAILURE; printf("%s\n", service); +#ifdef DEBUG_MEMORY free(service); +#endif return EXIT_SUCCESS; /* NOTREACHED */ @@ -103,13 +110,10 @@ int rc_service(int argc, char **argv) argc -= optind; argv += optind; - if (!*argv) eerrorx("%s: you need to specify a service", applet); - if (!(service = rc_service_resolve(*argv))) eerrorx("%s: service `%s' does not exist", applet, *argv); - *argv = service; execv(*argv, argv); eerrorx("%s: %s", applet, strerror(errno)); |