From 85ef570e0031d5b8a5b1b3adadcd9a70962b585e Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 24 Jul 2017 14:44:16 -0700 Subject: [PATCH 1/4] Implement AsRawFd for Stdin, Stdout, and Stderr --- src/libstd/sys/redox/ext/io.rs | 16 ++++++++++++++++ src/libstd/sys/unix/ext/io.rs | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/libstd/sys/redox/ext/io.rs b/src/libstd/sys/redox/ext/io.rs index 8e7cc593dbded..9723b42354edc 100644 --- a/src/libstd/sys/redox/ext/io.rs +++ b/src/libstd/sys/redox/ext/io.rs @@ -15,6 +15,7 @@ use fs; use net; use sys; +use io; use sys_common::{self, AsInner, FromInner, IntoInner}; /// Raw file descriptors. @@ -109,6 +110,21 @@ impl AsRawFd for net::UdpSocket { } } +#[stable(feature = "rust1", since = "1.0.0")] +impl AsRawFd for io::Stdin { + fn as_raw_fd(&self) -> RawFd { 0 } +} + +#[stable(feature = "rust1", since = "1.0.0")] +impl AsRawFd for io::Stdout { + fn as_raw_fd(&self) -> RawFd { 1 } +} + +#[stable(feature = "rust1", since = "1.0.0")] +impl AsRawFd for io::Stderr { + fn as_raw_fd(&self) -> RawFd { 2 } +} + #[stable(feature = "from_raw_os", since = "1.1.0")] impl FromRawFd for net::TcpStream { unsafe fn from_raw_fd(fd: RawFd) -> net::TcpStream { diff --git a/src/libstd/sys/unix/ext/io.rs b/src/libstd/sys/unix/ext/io.rs index 296235e173d13..6fb0ef9c4fbe4 100644 --- a/src/libstd/sys/unix/ext/io.rs +++ b/src/libstd/sys/unix/ext/io.rs @@ -16,7 +16,9 @@ use fs; use net; use os::raw; use sys; +use io; use sys_common::{self, AsInner, FromInner, IntoInner}; +use libc; /// Raw file descriptors. #[stable(feature = "rust1", since = "1.0.0")] @@ -104,6 +106,21 @@ impl AsRawFd for net::UdpSocket { fn as_raw_fd(&self) -> RawFd { *self.as_inner().socket().as_inner() } } +#[stable(feature = "rust1", since = "1.0.0")] +impl AsRawFd for io::Stdin { + fn as_raw_fd(&self) -> RawFd { libc::STDIN_FILENO } +} + +#[stable(feature = "rust1", since = "1.0.0")] +impl AsRawFd for io::Stdout { + fn as_raw_fd(&self) -> RawFd { libc::STDOUT_FILENO } +} + +#[stable(feature = "rust1", since = "1.0.0")] +impl AsRawFd for io::Stderr { + fn as_raw_fd(&self) -> RawFd { libc::STDERR_FILENO } +} + #[stable(feature = "from_raw_os", since = "1.1.0")] impl FromRawFd for net::TcpStream { unsafe fn from_raw_fd(fd: RawFd) -> net::TcpStream { From e9c55d1f79160ab2c8d34ebf0a7533bf426d8b95 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 25 Jul 2017 16:44:25 -0700 Subject: [PATCH 2/4] Correct 'stable' attribute --- src/libstd/sys/redox/ext/io.rs | 6 +++--- src/libstd/sys/unix/ext/io.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libstd/sys/redox/ext/io.rs b/src/libstd/sys/redox/ext/io.rs index 9723b42354edc..c4d99568c55c7 100644 --- a/src/libstd/sys/redox/ext/io.rs +++ b/src/libstd/sys/redox/ext/io.rs @@ -110,17 +110,17 @@ impl AsRawFd for net::UdpSocket { } } -#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawFd for io::Stdin { fn as_raw_fd(&self) -> RawFd { 0 } } -#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawFd for io::Stdout { fn as_raw_fd(&self) -> RawFd { 1 } } -#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawFd for io::Stderr { fn as_raw_fd(&self) -> RawFd { 2 } } diff --git a/src/libstd/sys/unix/ext/io.rs b/src/libstd/sys/unix/ext/io.rs index 6fb0ef9c4fbe4..a0323d933d65a 100644 --- a/src/libstd/sys/unix/ext/io.rs +++ b/src/libstd/sys/unix/ext/io.rs @@ -106,17 +106,17 @@ impl AsRawFd for net::UdpSocket { fn as_raw_fd(&self) -> RawFd { *self.as_inner().socket().as_inner() } } -#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawFd for io::Stdin { fn as_raw_fd(&self) -> RawFd { libc::STDIN_FILENO } } -#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawFd for io::Stdout { fn as_raw_fd(&self) -> RawFd { libc::STDOUT_FILENO } } -#[stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawFd for io::Stderr { fn as_raw_fd(&self) -> RawFd { libc::STDERR_FILENO } } From eac01f123d20f4a606496f3f0d1511edffaf7b88 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 28 Jul 2017 16:34:16 -0700 Subject: [PATCH 3/4] Implement AsRawHandle for Std* on Windows --- src/libstd/sys/windows/ext/io.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/libstd/sys/windows/ext/io.rs b/src/libstd/sys/windows/ext/io.rs index 2ddb6c65fd357..829e44cebf771 100644 --- a/src/libstd/sys/windows/ext/io.rs +++ b/src/libstd/sys/windows/ext/io.rs @@ -15,6 +15,7 @@ use os::windows::raw; use net; use sys_common::{self, AsInner, FromInner, IntoInner}; use sys; +use io; use sys::c; /// Raw HANDLEs. @@ -71,6 +72,27 @@ impl AsRawHandle for fs::File { } } +#[stable(feature = "asraw_stdio", since = "1.21.0")] +impl AsRawHandle for io::Stdin { + fn as_raw_handle(&self) -> RawHandle { + unsafe { c::GetStdHandle(c::STD_INPUT_HANDLE) } as RawHandle + } +} + +#[stable(feature = "asraw_stdio", since = "1.21.0")] +impl AsRawHandle for io::Stdout { + fn as_raw_handle(&self) -> RawHandle { + unsafe { c::GetStdHandle(c::STD_OUTPUT_HANDLE) } as RawHandle + } +} + +#[stable(feature = "asraw_stdio", since = "1.21.0")] +impl AsRawHandle for io::Stderr { + fn as_raw_handle(&self) -> RawHandle { + unsafe { c::GetStdHandle(c::STD_ERROR_HANDLE) } as RawHandle + } +} + #[stable(feature = "from_raw_os", since = "1.1.0")] impl FromRawHandle for fs::File { unsafe fn from_raw_handle(handle: RawHandle) -> fs::File { From 64e426e8e9fff27a7dc0a1bdf297bf5fd3f10b15 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 3 Aug 2017 15:54:53 -0700 Subject: [PATCH 4/4] Fix AsRawHandle --- src/libstd/sys/windows/ext/io.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libstd/sys/windows/ext/io.rs b/src/libstd/sys/windows/ext/io.rs index 829e44cebf771..90128dda088a9 100644 --- a/src/libstd/sys/windows/ext/io.rs +++ b/src/libstd/sys/windows/ext/io.rs @@ -75,21 +75,21 @@ impl AsRawHandle for fs::File { #[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawHandle for io::Stdin { fn as_raw_handle(&self) -> RawHandle { - unsafe { c::GetStdHandle(c::STD_INPUT_HANDLE) } as RawHandle + unsafe { c::GetStdHandle(c::STD_INPUT_HANDLE) as RawHandle } } } #[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawHandle for io::Stdout { fn as_raw_handle(&self) -> RawHandle { - unsafe { c::GetStdHandle(c::STD_OUTPUT_HANDLE) } as RawHandle + unsafe { c::GetStdHandle(c::STD_OUTPUT_HANDLE) as RawHandle } } } #[stable(feature = "asraw_stdio", since = "1.21.0")] impl AsRawHandle for io::Stderr { fn as_raw_handle(&self) -> RawHandle { - unsafe { c::GetStdHandle(c::STD_ERROR_HANDLE) } as RawHandle + unsafe { c::GetStdHandle(c::STD_ERROR_HANDLE) as RawHandle } } }