OrionUserland
Barry Importing existing Orion Userland 19aefaa (3 years, 2 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 */
+ }
+}