Skip to content

Commit

Permalink
Rollup merge of #92819 - euclio:atty, r=CraftSpider
Browse files Browse the repository at this point in the history
rustdoc: remove hand-rolled isatty

This PR replaces bindings to the platform-specific isatty APIs with the `isatty` crate, as done elsewhere in the repository.
  • Loading branch information
matthiaskrgr committed Jan 15, 2022
2 parents f0825b8 + 51d7665 commit 284199b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 41 deletions.
1 change: 1 addition & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4728,6 +4728,7 @@ version = "0.0.0"
dependencies = [
"arrayvec",
"askama",
"atty",
"expect-test",
"itertools 0.9.0",
"minifier",
Expand Down
1 change: 1 addition & 0 deletions src/librustdoc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
56 changes: 15 additions & 41 deletions src/librustdoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ extern crate tikv_jemalloc_sys;
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};
Expand Down Expand Up @@ -179,47 +180,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(),
&format!("invalid log color value '{}': expected one of always, never, or auto", value),
),
Err(VarError::NotUnicode(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.to_string_lossy()
),
),
};
let filter = tracing_subscriber::EnvFilter::from_env("RUSTDOC_LOG");
Expand Down

0 comments on commit 284199b

Please sign in to comment.