From 0621709286deae047663737d941787b319e18014 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 19 Jul 2022 10:42:55 +0200 Subject: [PATCH] Use redox-daemon in getty --- Cargo.lock | 11 +++++++++++ Cargo.toml | 1 + src/bin/getty.rs | 10 +++++----- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2fdc9a5687..f677f85a2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -158,6 +158,16 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +[[package]] +name = "redox-daemon" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e31c834277709c7ff3eb74959fe62be4b45b1189ba9d41fd3744cd3a9c554f" +dependencies = [ + "libc", + "redox_syscall", +] + [[package]] name = "redox_liner" version = "0.5.1" @@ -250,6 +260,7 @@ version = "0.1.0" dependencies = [ "clap", "extra", + "redox-daemon", "redox_liner", "redox_syscall", "redox_termios", diff --git a/Cargo.toml b/Cargo.toml index 59a1f56716..7e43a168a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,6 +53,7 @@ path = "src/bin/usermod.rs" [dependencies] clap = "2.33.0" extra = { git = "https://gitlab.redox-os.org/redox-os/libextra.git" } +redox-daemon = "0.1" redox_liner = "0.5.1" redox_syscall = "0.2.12" redox_termios = "0.1.2" diff --git a/src/bin/getty.rs b/src/bin/getty.rs index 0f4be255dd..c3550be83d 100644 --- a/src/bin/getty.rs +++ b/src/bin/getty.rs @@ -197,9 +197,9 @@ pub fn main() { Err(err) => fail(&format!("getty: failed to open TTY {}: {}", tty, err), &mut stderr), }; - match unsafe { syscall::clone(syscall::CloneFlags::empty()) } { - Ok(0) => daemon(tty_fd as RawFd, clear, &mut stderr), - Ok(_) => (), - Err(err) => fail(&format!("getty: failed to fork login: {}", err), &mut stderr) - } + redox_daemon::Daemon::new(|d| { + d.ready().expect("getty: failed to notify "); + daemon(tty_fd as RawFd, clear, &mut stderr); + std::process::exit(0); + }).unwrap_or_else(|err| fail(&format!("getty: failed to fork login: {}", err), &mut stderr)); }