diff options
author | Kirill Chibisov <contact@kchibisov.com> | 2020-07-10 22:32:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-10 22:32:44 +0300 |
commit | 8bd2c13490f8cb6ad6b0c1104f9586b3554efea2 (patch) | |
tree | 6909d3be00c72c3c5acdd173aa7f411a1bc6b445 /alacritty_terminal/src/util.rs | |
parent | b78f3d133960dad38ad21e808723e51661b59881 (diff) | |
download | r-alacritty-8bd2c13490f8cb6ad6b0c1104f9586b3554efea2.tar.gz r-alacritty-8bd2c13490f8cb6ad6b0c1104f9586b3554efea2.tar.bz2 r-alacritty-8bd2c13490f8cb6ad6b0c1104f9586b3554efea2.zip |
Add option to run command on bell
Fixes #1528.
Diffstat (limited to 'alacritty_terminal/src/util.rs')
-rw-r--r-- | alacritty_terminal/src/util.rs | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/alacritty_terminal/src/util.rs b/alacritty_terminal/src/util.rs deleted file mode 100644 index f996359a..00000000 --- a/alacritty_terminal/src/util.rs +++ /dev/null @@ -1,77 +0,0 @@ -use std::ffi::OsStr; -use std::io; -use std::process::{Command, Stdio}; - -#[cfg(not(windows))] -use std::os::unix::process::CommandExt; - -#[cfg(windows)] -use std::os::windows::process::CommandExt; -#[cfg(windows)] -use winapi::um::winbase::{CREATE_NEW_PROCESS_GROUP, CREATE_NO_WINDOW}; - -/// Threading utilities. -pub mod thread { - /// Like `thread::spawn`, but with a `name` argument. - pub fn spawn_named<F, T, S>(name: S, f: F) -> std::thread::JoinHandle<T> - where - F: FnOnce() -> T + Send + 'static, - T: Send + 'static, - S: Into<String>, - { - std::thread::Builder::new().name(name.into()).spawn(f).expect("thread spawn works") - } - - pub use std::thread::*; -} - -#[cfg(not(windows))] -pub fn start_daemon<I, S>(program: &str, args: I) -> io::Result<()> -where - I: IntoIterator<Item = S>, - S: AsRef<OsStr>, -{ - unsafe { - Command::new(program) - .args(args) - .stdin(Stdio::null()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .pre_exec(|| { - match ::libc::fork() { - -1 => return Err(io::Error::last_os_error()), - 0 => (), - _ => ::libc::_exit(0), - } - - if ::libc::setsid() == -1 { - return Err(io::Error::last_os_error()); - } - - Ok(()) - }) - .spawn()? - .wait() - .map(|_| ()) - } -} - -#[cfg(windows)] -pub fn start_daemon<I, S>(program: &str, args: I) -> io::Result<()> -where - I: IntoIterator<Item = S>, - S: AsRef<OsStr>, -{ - // Setting all the I/O handles to null and setting the - // CREATE_NEW_PROCESS_GROUP and CREATE_NO_WINDOW has the effect - // that console applications will run without opening a new - // console window. - Command::new(program) - .args(args) - .stdin(Stdio::null()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .creation_flags(CREATE_NEW_PROCESS_GROUP | CREATE_NO_WINDOW) - .spawn() - .map(|_| ()) -} |