aboutsummaryrefslogtreecommitdiff
path: root/alacritty_terminal/src/util.rs
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2020-07-10 22:32:44 +0300
committerGitHub <noreply@github.com>2020-07-10 22:32:44 +0300
commit8bd2c13490f8cb6ad6b0c1104f9586b3554efea2 (patch)
tree6909d3be00c72c3c5acdd173aa7f411a1bc6b445 /alacritty_terminal/src/util.rs
parentb78f3d133960dad38ad21e808723e51661b59881 (diff)
downloadr-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.rs77
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(|_| ())
-}