1 // run-pass
2 #![allow(dead_code)]
3 // ignore-wasm32-bare no libc
4 // ignore-sgx no libc
5 
6 #![feature(rustc_private)]
7 
8 extern crate libc;
9 
10 type DWORD = u32;
11 type HANDLE = *mut u8;
12 
13 #[cfg(windows)]
14 extern "system" {
GetStdHandle(which: DWORD) -> HANDLE15     fn GetStdHandle(which: DWORD) -> HANDLE;
CloseHandle(handle: HANDLE) -> i3216     fn CloseHandle(handle: HANDLE) -> i32;
17 }
18 
19 #[cfg(windows)]
close_stdout()20 fn close_stdout() {
21     const STD_OUTPUT_HANDLE: DWORD = -11i32 as DWORD;
22     unsafe { CloseHandle(GetStdHandle(STD_OUTPUT_HANDLE)); }
23 }
24 
25 #[cfg(not(windows))]
close_stdout()26 fn close_stdout() {
27     unsafe { libc::close(1); }
28 }
29 
main()30 fn main() {
31     close_stdout();
32     println!("hello");
33     println!("world");
34 }
35