From de4900f426069c9af741edc1b65e8fc22a465da8 Mon Sep 17 00:00:00 2001 From: Kevin Lange Date: Fri, 2 Sep 2016 19:59:41 +0900 Subject: [PATCH] Add quick single-user login tool --- Makefile | 4 +++- userspace/extra/quick-launch.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 userspace/extra/quick-launch.c diff --git a/Makefile b/Makefile index 7de996e1..c1ab6ab7 100644 --- a/Makefile +++ b/Makefile @@ -118,7 +118,7 @@ WITH_LOGS = logtoserial=1 .PHONY: all system install test toolchain userspace modules cdrom toaruos.iso cdrom-big toaruos-big.iso .PHONY: clean clean-soft clean-hard clean-user clean-mods clean-core clean-disk clean-once .PHONY: run vga term headless -.PHONY: kvm vga-kvm term-kvm headless-kvm +.PHONY: kvm vga-kvm term-kvm headless-kvm quick .PHONY: debug debug-kvm debug-term debug-term-kvm # Prevents Make from removing intermediary files on failure @@ -137,6 +137,8 @@ run: system ${EMU} ${EMUARGS} -append "$(VID_QEMU) $(DISK_ROOT)" kvm: system ${EMU} ${EMUARGS} ${EMUKVM} -append "$(VID_QEMU) $(DISK_ROOT)" +quick: system + ${EMU} ${EMUARGS} ${EMUKVM} -append "$(VID_QEMU) $(DISK_ROOT) start=quick-launch" debug: system ${EMU} ${EMUARGS} -append "$(VID_QEMU) $(WITH_LOGS) $(DISK_ROOT)" debug-kvm: system diff --git a/userspace/extra/quick-launch.c b/userspace/extra/quick-launch.c new file mode 100644 index 00000000..8dba960e --- /dev/null +++ b/userspace/extra/quick-launch.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include + +#include "lib/toaru_auth.h" + +#include "lib/trace.h" +#define TRACE_APP_NAME "quick-launch" + +int main(int argc, char * argv[]) { + TRACE("Starting session manager..."); + + int _session_pid = fork(); + if (!_session_pid) { + setuid(1000); + toaru_auth_set_vars(); + + char * args[] = {"/bin/gsession", NULL}; + execvp(args[0], args); + TRACE("gsession start failed?"); + } + + int pid = 0; + do { + pid = wait(NULL); + } while ((pid > 0 && pid != _session_pid) || (pid == -1 && errno == EINTR)); + + system("reboot"); + +}