diff options
author | Michel Stam <m.stam@fugro.nl> | 2014-10-13 16:14:37 +0200 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2014-10-12 13:24:11 +0200 |
commit | e63051d9843ddbafb1fabfd97d60e853bdeac129 (patch) | |
tree | 0a9e1908c95041641df2cb2b0e1fbf282eeb310a /utils | |
parent | 3ff99010e61a0299257ffc91467a16d278a7e774 (diff) | |
download | unitd-e63051d9843ddbafb1fabfd97d60e853bdeac129.tar unitd-e63051d9843ddbafb1fabfd97d60e853bdeac129.zip |
Honour tty field in /etc/inittab
The problem was caused by procd not opening /dev/tty* (whichever was
specified for the ID field /etc/inittab), causing /proc/PID/fd to
point to /dev/console instead.
Signed-off-by: Michel Stam <m.stam@fugro.nl>
Diffstat (limited to 'utils')
-rw-r--r-- | utils/askfirst.c | 28 |
1 files changed, 2 insertions, 26 deletions
diff --git a/utils/askfirst.c b/utils/askfirst.c index 6ad77aa..e1f757a 100644 --- a/utils/askfirst.c +++ b/utils/askfirst.c @@ -19,34 +19,10 @@ #include <unistd.h> #include <fcntl.h> -static int redirect_output(const char *dev) -{ - pid_t p = setsid(); - int fd; - - chdir("/dev"); - fd = open(dev, O_RDWR); - chdir("/"); - - if (fd < 0) - return -1; - - dup2(fd, STDIN_FILENO); - dup2(fd, STDOUT_FILENO); - dup2(fd, STDERR_FILENO); - tcsetpgrp(fd, p); - close(fd); - - return 0; -} - int main(int argc, char **argv) { int c; - if (redirect_output(argv[1])) - fprintf(stderr, "%s: Failed to open %s\n", argv[0], argv[1]); - printf("Please press Enter to activate this console.\n"); do { c = getchar(); @@ -55,8 +31,8 @@ int main(int argc, char **argv) } while (c != 0xA); - execvp(argv[2], &argv[2]); - printf("%s: Failed to execute %s\n", argv[0], argv[2]); + execvp(argv[1], &argv[1]); + printf("%s: Failed to execute %s\n", argv[0], argv[1]); return -1; } |