From cb085b6e405bfff63e8092e441ba21019a715a49 Mon Sep 17 00:00:00 2001
From: Katsu Kawakami <kkawa1570@gmail.com>
Date: Sun, 12 Jun 2016 21:18:25 -0400
Subject: [PATCH] Remove custom paths to tty modules

Instead of using custom path to module in lib.rs, load modules for different tty
platforms in tty/mod.rs
---
 src/lib.rs                    | 18 +++++-------------
 src/tty/{common.rs => mod.rs} | 10 ++++++++++
 src/tty/unix.rs               | 11 +++++------
 3 files changed, 20 insertions(+), 19 deletions(-)
 rename src/tty/{common.rs => mod.rs} (63%)

diff --git a/src/lib.rs b/src/lib.rs
index 36f37d75..d2e60e4e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -29,15 +29,7 @@ mod kill_ring;
 pub mod line_buffer;
 mod char_iter;
 
-// Depending on the platform, load the correct
-// tty modules
-#[cfg(unix)]
-#[path = "tty/unix.rs"] mod tty;
-
-#[cfg(windows)]
-#[path = "tty/windows.rs"] mod tty;
-
-#[path = "tty/common.rs"] mod tty_common;
+mod tty;
 
 use std::fmt;
 use std::io::{self, Write};
@@ -48,7 +40,7 @@ use std::sync;
 use std::sync::atomic;
 use nix::sys::signal;
 use encode_unicode::CharExt;
-use tty_common::Terminal;
+use tty::Terminal;
 use completion::Completer;
 use consts::{KeyPress, char_to_key_press};
 use history::History;
@@ -642,7 +634,7 @@ fn escape_sequence<R: io::Read>(chars: &mut char_iter::Chars<R>) -> Result<KeyPr
 /// It will also handle special inputs in an appropriate fashion
 /// (e.g., C-c will exit readline)
 #[cfg_attr(feature="clippy", allow(cyclomatic_complexity))]
-fn readline_edit<T: tty_common::Terminal>(prompt: &str,
+fn readline_edit<T: tty::Terminal>(prompt: &str,
                  history: &mut History,
                  completer: Option<&Completer>,
                  kill_ring: &mut KillRing,
@@ -908,8 +900,8 @@ impl<'completer> Editor<'completer> {
         // if the number of columns is stored here, we need a SIGWINCH handler...
         let editor = Editor {
             unsupported_term: tty::is_unsupported_term(),
-            stdin_isatty: tty_common::is_a_tty(libc::STDIN_FILENO),
-            stdout_isatty: tty_common::is_a_tty(libc::STDOUT_FILENO),
+            stdin_isatty: tty::is_a_tty(libc::STDIN_FILENO),
+            stdout_isatty: tty::is_a_tty(libc::STDOUT_FILENO),
             history: History::new(),
             completer: None,
             kill_ring: KillRing::new(60),
diff --git a/src/tty/common.rs b/src/tty/mod.rs
similarity index 63%
rename from src/tty/common.rs
rename to src/tty/mod.rs
index 0a6e88c1..ef8a1a0b 100644
--- a/src/tty/common.rs
+++ b/src/tty/mod.rs
@@ -2,6 +2,16 @@
 extern crate libc;
 use super::Result;
 
+// If on Windows platform import Windows TTY module 
+// and re-export into mod.rs scope
+#[cfg(windows)] mod windows;
+#[cfg(windows)] pub use self::windows::*;
+
+// If on Unix platform import Unix TTY module 
+// and re-export into mod.rs scope
+#[cfg(unix)] mod unix;
+#[cfg(unix)] pub use self::unix::*;
+
 /// Trait that should be for each TTY/Terminal on various platforms
 /// (e.g. unix & windows)
 pub trait Terminal {
diff --git a/src/tty/unix.rs b/src/tty/unix.rs
index 1adf68e3..fce1b6a0 100644
--- a/src/tty/unix.rs
+++ b/src/tty/unix.rs
@@ -4,10 +4,9 @@ extern crate libc;
 use std;
 use nix::sys::termios;
 use nix::errno::Errno;
-use super::Result;
-use super::tty_common;
-use super::error;
-use tty_common::Terminal;
+use super::Terminal;
+use ::Result;
+use ::error;
 
 /// Unsupported Terminals that don't support RAW mode
 static UNSUPPORTED_TERM: [&'static str; 3] = ["dumb", "cons25", "emacs"];
@@ -71,12 +70,12 @@ pub struct UnixTerminal {
     original_termios: Option<termios::Termios>
 }
 
-impl tty_common::Terminal for UnixTerminal {
+impl Terminal for UnixTerminal {
     /// Enable raw mode for the TERM
     fn enable_raw_mode(&mut self) -> Result<()> {
         use nix::sys::termios::{BRKINT, CS8, ECHO, ICANON, ICRNL, IEXTEN, INPCK, ISIG, ISTRIP, IXON,
                                 OPOST, VMIN, VTIME};
-        if !tty_common::is_a_tty(libc::STDIN_FILENO) {
+        if !super::is_a_tty(libc::STDIN_FILENO) {
             return Err(error::ReadlineError::from_errno(Errno::ENOTTY));
         }
         let original_termios = try!(termios::tcgetattr(libc::STDIN_FILENO));
-- 
GitLab