aboutsummaryrefslogtreecommitdiff
path: root/src/tty/mod.rs
diff options
context:
space:
mode:
authorTheodore Dubois <tblodt@icloud.com>2019-04-28 06:24:58 -0700
committerChristian Duerr <chrisduerr@users.noreply.github.com>2019-04-28 13:24:58 +0000
commitdbd8538762ef8968a493e1bf996e8693479ca783 (patch)
tree32ac2a6a5e01238a272d4ba534551d2e42903c7a /src/tty/mod.rs
parent9c6d12ea2c863ba76015bdedc00db13b7307725a (diff)
downloadr-alacritty-dbd8538762ef8968a493e1bf996e8693479ca783.tar.gz
r-alacritty-dbd8538762ef8968a493e1bf996e8693479ca783.tar.bz2
r-alacritty-dbd8538762ef8968a493e1bf996e8693479ca783.zip
Split alacritty into a separate crates
The crate containing the entry point is called alacritty, and the crate containing everything else is called alacritty_terminal.
Diffstat (limited to 'src/tty/mod.rs')
-rw-r--r--src/tty/mod.rs96
1 files changed, 0 insertions, 96 deletions
diff --git a/src/tty/mod.rs b/src/tty/mod.rs
deleted file mode 100644
index ec175ee6..00000000
--- a/src/tty/mod.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2016 Joe Wilm, The Alacritty Project Contributors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//! tty related functionality
-use mio;
-use std::{env, io};
-
-use terminfo::Database;
-
-use crate::config::Config;
-
-#[cfg(not(windows))]
-mod unix;
-#[cfg(not(windows))]
-pub use self::unix::*;
-
-#[cfg(windows)]
-mod windows;
-#[cfg(windows)]
-pub use self::windows::*;
-
-/// This trait defines the behaviour needed to read and/or write to a stream.
-/// It defines an abstraction over mio's interface in order to allow either one
-/// read/write object or a seperate read and write object.
-pub trait EventedReadWrite {
- type Reader: io::Read;
- type Writer: io::Write;
-
- fn register(
- &mut self,
- _: &mio::Poll,
- _: &mut dyn Iterator<Item = mio::Token>,
- _: mio::Ready,
- _: mio::PollOpt,
- ) -> io::Result<()>;
- fn reregister(&mut self, _: &mio::Poll, _: mio::Ready, _: mio::PollOpt) -> io::Result<()>;
- fn deregister(&mut self, _: &mio::Poll) -> io::Result<()>;
-
- fn reader(&mut self) -> &mut Self::Reader;
- fn read_token(&self) -> mio::Token;
- fn writer(&mut self) -> &mut Self::Writer;
- fn write_token(&self) -> mio::Token;
-}
-
-/// Events concerning TTY child processes
-#[derive(PartialEq)]
-pub enum ChildEvent {
- /// Indicates the child has exited
- Exited,
-}
-
-/// A pseudoterminal (or PTY)
-///
-/// This is a refinement of EventedReadWrite that also provides a channel through which we can be
-/// notified if the PTY child process does something we care about (other than writing to the TTY).
-/// In particular, this allows for race-free child exit notification on UNIX (cf. `SIGCHLD`).
-pub trait EventedPty: EventedReadWrite {
- #[cfg(unix)]
- fn child_event_token(&self) -> mio::Token;
-
- /// Tries to retrieve an event
- ///
- /// Returns `Some(event)` on success, or `None` if there are no events to retrieve.
- #[cfg(unix)]
- fn next_child_event(&mut self) -> Option<ChildEvent>;
-}
-
-// Setup environment variables
-pub fn setup_env(config: &Config) {
- // Default to 'alacritty' terminfo if it is available, otherwise
- // default to 'xterm-256color'. May be overridden by user's config
- // below.
- env::set_var(
- "TERM",
- if Database::from_name("alacritty").is_ok() { "alacritty" } else { "xterm-256color" },
- );
-
- // Advertise 24-bit color support
- env::set_var("COLORTERM", "truecolor");
-
- // Set env vars from config
- for (key, value) in config.env().iter() {
- env::set_var(key, value);
- }
-}