OrionUserland
Barry Importing existing Orion Userland 19aefaa (2 years, 4 months ago)diff --git a/init/main.c b/init/main.c new file mode 100644 index 0000000..0eb2b3b --- /dev/null +++ b/init/main.c @@ -0,0 +1,42 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/wait.h> + +/* Main function */ +int +main(int argc, char *argv[]) +{ + if (getpid() != 1) { + printf("init will not run except as PID#1"); + abort(); + } + + dbgprintf("Starting init"); + + /* Open standard descriptors */ + open("/dev/tty", O_RDONLY); + open("/dev/tty", O_WRONLY); + dup(1); + + printf("Welcome to \033[1;32mOrion\033[0m!\n"); + + int status; + pid_t child; + while (1) { + child = fork(); + if (!child) { + char *v[] = { "login", NULL }; + int err = execve("/bin/login", v, NULL); + if (err < 0) { + printf("init: %s: ", "/bin/login"); + perror(NULL); + while (1); + } + } else { + waitpid(child, &status, 0); + } + printf("\033[H\033[2J"); /* Clear screen */ + } +}