chore: use is_terminal in atty (#21010)

This commit is contained in:
Divy Srivastava 2023-10-28 19:49:21 -07:00 committed by GitHub
parent 857e0841c0
commit f3b580d001
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,12 +1,10 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
use std::io::Error;
use std::io::IsTerminal;
use deno_core::error::AnyError;
use deno_core::op2;
use deno_core::OpState;
use deno_core::ResourceHandle;
#[cfg(unix)]
use deno_core::ResourceId;
@ -167,24 +165,7 @@ fn op_stdin_set_raw(
#[op2(fast)]
fn op_isatty(state: &mut OpState, rid: u32) -> Result<bool, AnyError> {
let handle = state.resource_table.get_handle(rid)?;
// TODO(mmastrac): this can migrate to the deno_core implementation when it lands
Ok(match handle {
ResourceHandle::Fd(fd) if handle.is_valid() => {
#[cfg(windows)]
{
// SAFETY: The resource remains open for the for the duration of borrow_raw
unsafe {
std::os::windows::io::BorrowedHandle::borrow_raw(fd).is_terminal()
}
}
#[cfg(unix)]
{
// SAFETY: The resource remains open for the for the duration of borrow_raw
unsafe { std::os::fd::BorrowedFd::borrow_raw(fd).is_terminal() }
}
}
_ => false,
})
Ok(handle.is_terminal())
}
#[op2(fast)]