2018-02-25 08:13:54 +03:00
|
|
|
#include <syscall.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <wait.h>
|
2018-03-04 16:50:53 +03:00
|
|
|
#include <string.h>
|
2018-02-25 08:13:54 +03:00
|
|
|
|
|
|
|
void set_console() {
|
2018-02-25 11:14:43 +03:00
|
|
|
int _stdin = syscall_open("/dev/null", 0, 0);
|
2018-02-25 08:13:54 +03:00
|
|
|
int _stdout = syscall_open("/dev/ttyS0", 1, 0);
|
|
|
|
int _stderr = syscall_open("/dev/ttyS0", 1, 0);
|
|
|
|
|
|
|
|
if (_stdout < 0) {
|
|
|
|
_stdout = syscall_open("/dev/null", 1, 0);
|
|
|
|
_stderr = syscall_open("/dev/null", 1, 0);
|
|
|
|
}
|
2018-04-25 08:03:29 +03:00
|
|
|
|
|
|
|
(void)_stderr;
|
|
|
|
(void)_stdin;
|
2018-02-25 08:13:54 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
int start_options(char * args[]) {
|
|
|
|
int pid = syscall_fork();
|
|
|
|
if (!pid) {
|
|
|
|
char * _envp[] = {
|
|
|
|
"LD_LIBRARY_PATH=/lib",
|
|
|
|
"HOME=/",
|
|
|
|
"PATH=/bin",
|
|
|
|
"USER=root",
|
2018-02-25 15:54:39 +03:00
|
|
|
"WM_THEME=fancy",
|
2018-02-25 08:13:54 +03:00
|
|
|
NULL,
|
|
|
|
};
|
2018-04-25 08:03:29 +03:00
|
|
|
syscall_execve(args[0], args, _envp);
|
2018-02-25 08:13:54 +03:00
|
|
|
syscall_exit(0);
|
|
|
|
} else {
|
|
|
|
int pid = 0;
|
|
|
|
do {
|
|
|
|
pid = wait(NULL);
|
|
|
|
} while ((pid > 0) || (pid == -1 && errno == EINTR));
|
|
|
|
}
|
2018-04-25 08:03:29 +03:00
|
|
|
return 0;
|
2018-02-25 08:13:54 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
int main(int argc, char * argv[]) {
|
|
|
|
set_console();
|
|
|
|
|
|
|
|
syscall_sethostname("base");
|
2018-03-04 16:50:53 +03:00
|
|
|
|
|
|
|
if (argc > 1) {
|
|
|
|
if (!strcmp(argv[1], "--vga")) {
|
2018-05-02 12:58:47 +03:00
|
|
|
return start_options((char *[]){"/bin/terminal-vga",NULL});
|
2018-03-04 16:50:53 +03:00
|
|
|
} else if (!strcmp(argv[1], "--migrate")) {
|
2018-03-15 13:30:04 +03:00
|
|
|
return start_options((char *[]){"/bin/migrate",NULL});
|
2018-03-04 16:50:53 +03:00
|
|
|
} else {
|
|
|
|
/* Pass it to the compositor... */
|
|
|
|
return start_options((char *[]){"/bin/compositor","--",argv[1],NULL});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return start_options((char *[]){"/bin/compositor",NULL});
|
2018-02-25 08:13:54 +03:00
|
|
|
}
|