diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/runsvc/runsvc.c | 47 |
1 files changed, 1 insertions, 46 deletions
diff --git a/cmd/runsvc/runsvc.c b/cmd/runsvc/runsvc.c index 9e646e7..e36010b 100644 --- a/cmd/runsvc/runsvc.c +++ b/cmd/runsvc/runsvc.c @@ -17,51 +17,6 @@ */ #include "runsvc.h" -static int setup_tty(service_t *svc) -{ - int fd; - - if (svc->ctty != NULL) { - fd = open(svc->ctty, O_RDWR); - if (fd < 0) { - perror(svc->ctty); - return -1; - } - - if (svc->flags & SVC_FLAG_TRUNCATE_OUT) - ftruncate(fd, 0); - - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); - - setsid(); - - dup2(fd, STDIN_FILENO); - dup2(fd, STDOUT_FILENO); - dup2(fd, STDERR_FILENO); - close(fd); - } - - return 0; -} - -/*****************************************************************************/ - -static NORETURN void argv_exec(exec_t *e) -{ - char **argv = alloca(e->argc + 1), *ptr; - int i; - - for (ptr = e->args, i = 0; i < e->argc; ++i, ptr += strlen(ptr) + 1) - argv[i] = ptr; - - argv[i] = NULL; - execvp(argv[0], argv); - perror(argv[0]); - exit(EXIT_FAILURE); -} - static int runlst_wait(exec_t *list) { pid_t ret, pid; @@ -128,7 +83,7 @@ int main(int argc, char **argv) if (initenv()) goto out; - if (setup_tty(svc)) + if (setup_tty(svc->ctty, (svc->flags & SVC_FLAG_TRUNCATE_OUT) != 0)) goto out; if (svc->exec->next == NULL) |