File tree Expand file tree Collapse file tree 3 files changed +19
-3
lines changed
library/std/src/sys/pal/hermit Expand file tree Collapse file tree 3 files changed +19
-3
lines changed Original file line number Diff line number Diff line change 22
33use super :: hermit_abi;
44use crate :: cmp;
5- use crate :: io:: { self , IoSlice , IoSliceMut } ;
5+ use crate :: io:: { self , BorrowedCursor , IoSlice , IoSliceMut } ;
66use crate :: os:: hermit:: io:: { FromRawFd , OwnedFd , RawFd , * } ;
77use crate :: sys:: cvt;
88use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
@@ -23,6 +23,18 @@ impl FileDesc {
2323 Ok ( result as usize )
2424 }
2525
26+ pub fn read_buf ( & self , mut buf : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
27+ let result = cvt ( unsafe {
28+ hermit_abi:: read (
29+ self . fd . as_raw_fd ( ) ,
30+ buf. as_mut ( ) . as_mut_ptr ( ) as * mut u8 ,
31+ buf. capacity ( ) ,
32+ )
33+ } ) ?;
34+ unsafe { buf. advance_unchecked ( result as usize ) } ;
35+ Ok ( ( ) )
36+ }
37+
2638 pub fn read_vectored ( & self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
2739 let ret = cvt ( unsafe {
2840 hermit_abi:: readv (
Original file line number Diff line number Diff line change @@ -400,7 +400,7 @@ impl File {
400400 }
401401
402402 pub fn read_buf ( & self , cursor : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
403- crate :: io :: default_read_buf ( |buf| self . read ( buf ) , cursor)
403+ self . 0 . read_buf ( cursor)
404404 }
405405
406406 pub fn write ( & self , buf : & [ u8 ] ) -> io:: Result < usize > {
Original file line number Diff line number Diff line change 11use super :: hermit_abi;
22use crate :: io;
3- use crate :: io:: { IoSlice , IoSliceMut } ;
3+ use crate :: io:: { BorrowedCursor , IoSlice , IoSliceMut } ;
44use crate :: mem:: ManuallyDrop ;
55use crate :: os:: hermit:: io:: FromRawFd ;
66use crate :: sys:: fd:: FileDesc ;
@@ -20,6 +20,10 @@ impl io::Read for Stdin {
2020 unsafe { ManuallyDrop :: new ( FileDesc :: from_raw_fd ( hermit_abi:: STDIN_FILENO ) ) . read ( buf) }
2121 }
2222
23+ fn read_buf ( & mut self , buf : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
24+ unsafe { ManuallyDrop :: new ( FileDesc :: from_raw_fd ( hermit_abi:: STDIN_FILENO ) ) . read_buf ( buf) }
25+ }
26+
2327 fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
2428 unsafe {
2529 ManuallyDrop :: new ( FileDesc :: from_raw_fd ( hermit_abi:: STDIN_FILENO ) ) . read_vectored ( bufs)
You can’t perform that action at this time.
0 commit comments