From d1709e5dbca700c72c061fff64e4a876a88262b8 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 19 Jul 2022 10:36:30 +0200 Subject: [PATCH] Use redox-daemon --- Cargo.lock | 17 +++++++++++++++++ Cargo.toml | 1 + src/main.rs | 7 ++++--- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2040823aff..4a76ec3cde 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,14 +8,31 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "libc" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" + [[package]] name = "ptyd" version = "0.1.0" dependencies = [ + "redox-daemon", "redox_syscall", "redox_termios", ] +[[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_syscall" version = "0.2.16" diff --git a/Cargo.toml b/Cargo.toml index f432cda8f4..8ea05037f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,5 +3,6 @@ name = "ptyd" version = "0.1.0" [dependencies] +redox-daemon = "0.1" redox_syscall = "0.2.12" redox_termios = "0.1.2" diff --git a/src/main.rs b/src/main.rs index d49976c680..59581c43de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,8 +22,7 @@ mod winsize; use scheme::PtyScheme; fn main(){ - // Daemonize - if unsafe { syscall::clone(CloneFlags::empty()).unwrap() } == 0 { + redox_daemon::Daemon::new(move |daemon| { let mut event_file = OpenOptions::new() .read(true) .write(true) @@ -48,6 +47,8 @@ fn main(){ syscall::setrens(0, 0).expect("ptyd: failed to enter null namespace"); + daemon.ready().expect("pty: failed to notify parent"); + event_file.write(&Event { id: socket.as_raw_fd() as usize, flags: syscall::EVENT_READ, @@ -115,7 +116,7 @@ fn main(){ } } } - } + }).expect("pty: failed to daemonize"); } fn timeout(time_file: &mut File) -> io::Result<()> {