use embedded implementation instead of istty crate

This commit is contained in:
Cengiz Can 2017-07-03 01:34:25 +03:00
parent 7b0a7fdaf2
commit 0e18a9cd55

View file

@ -56,7 +56,6 @@ extern crate log;
extern crate syntax;
extern crate syntax_ext;
extern crate syntax_pos;
extern crate isatty;
use driver::CompileController;
use pretty::{PpMode, UserIdentifiedItem};
@ -101,8 +100,6 @@ use syntax::feature_gate::{GatedCfg, UnstableFeatures};
use syntax::parse::{self, PResult};
use syntax_pos::{DUMMY_SP, MultiSpan};
use isatty::stdout_isatty;
#[cfg(test)]
pub mod test;
@ -347,6 +344,35 @@ pub trait CompilerCalls<'a> {
#[derive(Copy, Clone)]
pub struct RustcDefaultCalls;
/**
* TODO remove these and use winapi 0.3 instead
*
* These are duplicated in
* - bootstrap/compile.rs#L478
* - librustc_errors/emitter.rs#L1253
*/
#[cfg(unix)]
fn stdout_isatty() -> bool {
unsafe { libc::isatty(libc::STDOUT_FILENO) != 0 }
}
#[cfg(windows)]
fn stdout_isatty() -> bool {
type DWORD = u32;
type BOOL = i32;
type HANDLE = *mut u8;
type LPDWORD = *mut u32;
const STD_OUTPUT_HANDLE: DWORD = -11i32 as DWORD;
extern "system" {
fn GetStdHandle(which: DWORD) -> HANDLE;
fn GetConsoleMode(hConsoleHandle: HANDLE, lpMode: LPDWORD) -> BOOL;
}
unsafe {
let handle = GetStdHandle(STD_OUTPUT_HANDLE);
let mut out = 0;
GetConsoleMode(handle, &mut out) != 0
}
}
fn handle_explain(code: &str,
descriptions: &errors::registry::Registry,
output: ErrorOutputType) {