login(1): use setsid() and use given tty
This commit is contained in:
+1
-1
@@ -2,4 +2,4 @@
|
||||
|
||||
init:1:wait:/sbin/rc default
|
||||
|
||||
l0:1:once:/bin/login
|
||||
l0:1:once:/bin/login /dev/tty0
|
||||
|
||||
@@ -3,5 +3,9 @@
|
||||
echo Mounting /dev
|
||||
mount -t devfs /dev
|
||||
|
||||
chmod 0666 /dev/tty0
|
||||
chown 0:1000 /dev/ttyS0
|
||||
chmod 0660 /dev/ttyS0
|
||||
|
||||
echo Mounting /sys
|
||||
mount -t sysfs /sys
|
||||
|
||||
@@ -163,6 +163,28 @@ int main(int argc, char **argv) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "usage: login TTY\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Will release 0, 1, 2
|
||||
if (setsid() < 0) {
|
||||
perror("setsid()");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Open the terminal
|
||||
if (open(argv[1], O_RDONLY, 0) != STDIN_FILENO) {
|
||||
return -1;
|
||||
}
|
||||
if (open(argv[1], O_WRONLY, 0) != STDOUT_FILENO) {
|
||||
return -1;
|
||||
}
|
||||
if (dup(STDOUT_FILENO) != STDERR_FILENO) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
signal(SIGINT, signal_handler);
|
||||
|
||||
char spnam_buf[128];
|
||||
|
||||
Reference in New Issue
Block a user