@@ -4,9 +4,9 @@ use core::arch::asm;
44
55use crate :: io;
66
7- pub struct Stdin ;
7+ pub type Stdin = super :: unsupported_stdio :: Stdin ;
88pub struct Stdout ;
9- pub struct Stderr ;
9+ pub type Stderr = Stdout ;
1010
1111const KCALL_DEBUG_CMD_PUT_BYTES : i64 = 2 ;
1212
@@ -25,27 +25,6 @@ unsafe fn debug_call(cap_ref: u64, call_no: i64, arg1: u64, arg2: u64) -> i32 {
2525 ret as i32
2626}
2727
28- fn print_buf ( s : & [ u8 ] ) -> io:: Result < usize > {
29- // Corresponds to `HM_DEBUG_PUT_BYTES_LIMIT`.
30- const MAX_LEN : usize = 512 ;
31- let len = if s. len ( ) > MAX_LEN { MAX_LEN } else { s. len ( ) } ;
32- let result = unsafe { debug_call ( 0 , KCALL_DEBUG_CMD_PUT_BYTES , s. as_ptr ( ) as u64 , len as u64 ) } ;
33-
34- if result == 0 { Ok ( len) } else { Err ( io:: Error :: from ( io:: ErrorKind :: InvalidInput ) ) }
35- }
36-
37- impl Stdin {
38- pub const fn new ( ) -> Stdin {
39- Stdin
40- }
41- }
42-
43- impl io:: Read for Stdin {
44- fn read ( & mut self , _buf : & mut [ u8 ] ) -> io:: Result < usize > {
45- Ok ( 0 )
46- }
47- }
48-
4928impl Stdout {
5029 pub const fn new ( ) -> Stdout {
5130 Stdout
@@ -54,31 +33,21 @@ impl Stdout {
5433
5534impl io:: Write for Stdout {
5635 fn write ( & mut self , buf : & [ u8 ] ) -> io:: Result < usize > {
57- print_buf ( buf)
58- }
36+ // Corresponds to `HM_DEBUG_PUT_BYTES_LIMIT`.
37+ const MAX_LEN : usize = 512 ;
38+ let len = buf. len ( ) . min ( MAX_LEN ) ;
39+ let result =
40+ unsafe { debug_call ( 0 , KCALL_DEBUG_CMD_PUT_BYTES , buf. as_ptr ( ) as u64 , len as u64 ) } ;
5941
60- fn flush ( & mut self ) -> io:: Result < ( ) > {
61- Ok ( ( ) )
62- }
63- }
64-
65- impl Stderr {
66- pub const fn new ( ) -> Stderr {
67- Stderr
68- }
69- }
70-
71- impl io:: Write for Stderr {
72- fn write ( & mut self , buf : & [ u8 ] ) -> io:: Result < usize > {
73- print_buf ( buf)
42+ if result == 0 { Ok ( len) } else { Err ( io:: Error :: from ( io:: ErrorKind :: InvalidInput ) ) }
7443 }
7544
7645 fn flush ( & mut self ) -> io:: Result < ( ) > {
7746 Ok ( ( ) )
7847 }
7948}
8049
81- pub const STDIN_BUF_SIZE : usize = 0 ;
50+ pub const STDIN_BUF_SIZE : usize = super :: unsupported_stdio :: STDIN_BUF_SIZE ;
8251
8352pub fn is_ebadf ( err : & io:: Error ) -> bool {
8453 err. raw_os_error ( ) == Some ( libc:: EBADF as i32 )
0 commit comments