X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=inittab.c;h=622601ab3e316bebe421a53f7b3fd942bf1eb21d;hp=f8f0218f219b01023de4270483cf09eda134a3e8;hb=38dd221a41ca93155b0427be4f5d536173dbd111;hpb=037aa8f9c15276499760e7d57083fd3df512c901 diff --git a/inittab.c b/inittab.c index f8f0218..622601a 100644 --- a/inittab.c +++ b/inittab.c @@ -93,22 +93,14 @@ static int dev_exist(const char *dev) static void fork_worker(struct init_action *a) { - int fd; pid_t p; a->proc.pid = fork(); if (!a->proc.pid) { p = setsid(); - fd = dev_open(a->id); - if (fd != -1) - { - dup2(fd, STDIN_FILENO); - dup2(fd, STDOUT_FILENO); - dup2(fd, STDERR_FILENO); - if (fd > STDERR_FILENO) - close(fd); - } + if (patch_stdio(a->id)) + ERROR("Failed to setup i/o redirection\n"); ioctl(STDIN_FILENO, TIOCSCTTY, 1); tcsetpgrp(STDIN_FILENO, p);