From 5ab9c1c10322a4db21349555d901646259d26d6f Mon Sep 17 00:00:00 2001 From: sin Date: Thu, 6 Feb 2014 12:01:00 +0000 Subject: Factor out the rc commands --- sinit.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'sinit.c') diff --git a/sinit.c b/sinit.c index 69fd43e..a398e6e 100644 --- a/sinit.c +++ b/sinit.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ + #include #include #include @@ -23,10 +24,8 @@ typedef struct { const Arg arg; } Command; -static void cmdpoweroff(const Arg *); -static void cmdreboot(const Arg *); static void dispatchcmd(int); -static void spawn(const char *, char *const []); +static void spawn(const Arg *); #include "config.h" @@ -53,7 +52,7 @@ main(void) sigprocmask(SIG_UNBLOCK, &set, 0); - spawn("/bin/rc.init", (char *[]){ "rc.init", NULL }); + spawn(&rcinitarg); unlink(fifopath); umask(0); @@ -78,18 +77,6 @@ main(void) return EXIT_SUCCESS; } -static void -cmdpoweroff(const Arg *arg) -{ - spawn("/bin/rc.shutdown", (char *[]) { "rc", "poweroff", NULL }); -} - -static void -cmdreboot(const Arg *arg) -{ - spawn("/bin/rc.shutdown", (char *[]) { "rc", "reboot", NULL }); -} - static void dispatchcmd(int fd) { @@ -113,9 +100,10 @@ dispatchcmd(int fd) } static void -spawn(const char *file, char *const argv[]) +spawn(const Arg *arg) { pid_t pid; + const char *p = arg->v; pid = fork(); if (pid < 0) @@ -123,7 +111,7 @@ spawn(const char *file, char *const argv[]) if (pid == 0) { setsid(); setpgid(0, 0); - execvp(file, argv); + execvp(p, arg->v); _exit(errno == ENOENT ? 127 : 126); } } -- cgit v1.2.3-70-g09d2