From 51d7665be170df3abbaf4bc0fcf435820011d214 Mon Sep 17 00:00:00 2001 From: Andy Russell Date: Wed, 12 Jan 2022 12:46:18 -0500 Subject: [PATCH] rustdoc: remove hand-rolled isatty --- Cargo.lock | 1 + src/librustdoc/Cargo.toml | 1 + src/librustdoc/lib.rs | 56 +++++++++++---------------------------- 3 files changed, 17 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef9f91fdb43..86f37c3087a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4679,6 +4679,7 @@ version = "0.0.0" dependencies = [ "arrayvec", "askama", + "atty", "expect-test", "itertools 0.9.0", "minifier", diff --git a/src/librustdoc/Cargo.toml b/src/librustdoc/Cargo.toml index 5025342c1d6..b14ecaf0197 100644 --- a/src/librustdoc/Cargo.toml +++ b/src/librustdoc/Cargo.toml @@ -9,6 +9,7 @@ path = "lib.rs" [dependencies] arrayvec = { version = "0.7", default-features = false } askama = { version = "0.11", default-features = false } +atty = "0.2" pulldown-cmark = { version = "0.9", default-features = false } minifier = "0.0.41" rayon = "1.3.1" diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index d7741c4fde2..572474f9307 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -70,7 +70,8 @@ use tikv_jemalloc_sys as jemalloc_sys; use std::default::Default; -use std::env; +use std::env::{self, VarError}; +use std::io; use std::process; use rustc_driver::{abort_on_err, describe_lints}; @@ -178,47 +179,20 @@ pub fn main() { } fn init_logging() { - use std::io; - - // FIXME remove these and use winapi 0.3 instead - // Duplicates: bootstrap/compile.rs, librustc_errors/emitter.rs, rustc_driver/lib.rs - #[cfg(unix)] - fn stdout_isatty() -> bool { - extern crate libc; - unsafe { libc::isatty(libc::STDOUT_FILENO) != 0 } - } - - #[cfg(windows)] - fn stdout_isatty() -> bool { - extern crate winapi; - use winapi::um::consoleapi::GetConsoleMode; - use winapi::um::processenv::GetStdHandle; - use winapi::um::winbase::STD_OUTPUT_HANDLE; - - unsafe { - let handle = GetStdHandle(STD_OUTPUT_HANDLE); - let mut out = 0; - GetConsoleMode(handle, &mut out) != 0 - } - } - - let color_logs = match std::env::var("RUSTDOC_LOG_COLOR") { - Ok(value) => match value.as_ref() { - "always" => true, - "never" => false, - "auto" => stdout_isatty(), - _ => early_error( - ErrorOutputType::default(), - &format!( - "invalid log color value '{}': expected one of always, never, or auto", - value - ), - ), - }, - Err(std::env::VarError::NotPresent) => stdout_isatty(), - Err(std::env::VarError::NotUnicode(_value)) => early_error( + let color_logs = match std::env::var("RUSTDOC_LOG_COLOR").as_deref() { + Ok("always") => true, + Ok("never") => false, + Ok("auto") | Err(VarError::NotPresent) => atty::is(atty::Stream::Stdout), + Ok(value) => early_error( ErrorOutputType::default(), - "non-Unicode log color value: expected one of always, never, or auto", + &format!("invalid log color value '{}': expected one of always, never, or auto", value), + ), + Err(VarError::NotUnicode(value)) => early_error( + ErrorOutputType::default(), + &format!( + "invalid log color value '{}': expected one of always, never, or auto", + value.to_string_lossy() + ), ), }; let filter = tracing_subscriber::EnvFilter::from_env("RUSTDOC_LOG");