diff options
| author | Baoshan Pang <baoshan.pang@windriver.com> | 2019-07-15 23:57:53 -0700 | 
|---|---|---|
| committer | Baoshan Pang <baoshan.pang@windriver.com> | 2019-07-16 00:13:07 -0700 | 
| commit | 4c0c0f6158b464ee5070b32bb37f2863d0eff012 (patch) | |
| tree | 3306eadf9f3bb9023cfca1fc16b44e18132916e9 /src/libstd/sys/vxworks/stdio.rs | |
| parent | 4a95e9704de0eeaecba55df102c1129e79a3a929 (diff) | |
| download | rust-4c0c0f6158b464ee5070b32bb37f2863d0eff012.tar.gz rust-4c0c0f6158b464ee5070b32bb37f2863d0eff012.zip  | |
Add supporting for vxWorks
r? @alexcrichton
Diffstat (limited to 'src/libstd/sys/vxworks/stdio.rs')
| -rw-r--r-- | src/libstd/sys/vxworks/stdio.rs | 63 | 
1 files changed, 63 insertions, 0 deletions
diff --git a/src/libstd/sys/vxworks/stdio.rs b/src/libstd/sys/vxworks/stdio.rs new file mode 100644 index 00000000000..35f163bbdb1 --- /dev/null +++ b/src/libstd/sys/vxworks/stdio.rs @@ -0,0 +1,63 @@ +use crate::io; +use crate::sys::fd::FileDesc; + +pub struct Stdin(()); +pub struct Stdout(()); +pub struct Stderr(()); + +impl Stdin { + pub fn new() -> io::Result<Stdin> { Ok(Stdin(())) } +} + +impl io::Read for Stdin { + fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { + let fd = FileDesc::new(libc::STDIN_FILENO); + let ret = fd.read(buf); + fd.into_raw(); // do not close this FD + ret + } +} + +impl Stdout { + pub fn new() -> io::Result<Stdout> { Ok(Stdout(())) } +} + +impl io::Write for Stdout { + fn write(&mut self, buf: &[u8]) -> io::Result<usize> { + let fd = FileDesc::new(libc::STDOUT_FILENO); + let ret = fd.write(buf); + fd.into_raw(); // do not close this FD + ret + } + + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } +} + +impl Stderr { + pub fn new() -> io::Result<Stderr> { Ok(Stderr(())) } +} + +impl io::Write for Stderr { + fn write(&mut self, buf: &[u8]) -> io::Result<usize> { + let fd = FileDesc::new(libc::STDERR_FILENO); + let ret = fd.write(buf); + fd.into_raw(); // do not close this FD + ret + } + + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } +} + +pub fn is_ebadf(err: &io::Error) -> bool { + err.raw_os_error() == Some(libc::EBADF as i32) +} + +pub const STDIN_BUF_SIZE: usize = crate::sys_common::io::DEFAULT_BUF_SIZE; + +pub fn panic_output() -> Option<impl io::Write> { + Stderr::new().ok() +}  | 
