fix impl File for Stdin/Stdout
This commit is contained in:
parent
26189dddaa
commit
0437e81f36
@ -22,6 +22,12 @@ impl convert::From<(Errno, &'static str)> for Error {
|
||||
}
|
||||
}
|
||||
|
||||
impl convert::From<std::io::Error> for Error {
|
||||
fn from(info: std::io::Error) -> Error {
|
||||
Error::new(Errno::from_errno(info.raw_os_error().unwrap()), "std::io::Error")
|
||||
}
|
||||
}
|
||||
|
||||
impl error::Error for Error {
|
||||
fn description(&self) -> &str {
|
||||
self.desc
|
||||
|
@ -323,12 +323,12 @@ impl File for StdoutFile {
|
||||
Ok(write_len)
|
||||
}
|
||||
|
||||
fn read_at(&self, offset: usize, buf: &mut [u8]) -> Result<usize, Error> {
|
||||
unimplemented!()
|
||||
fn read_at(&self, _offset: usize, buf: &mut [u8]) -> Result<usize, Error> {
|
||||
self.read(buf)
|
||||
}
|
||||
|
||||
fn write_at(&self, offset: usize, buf: &[u8]) -> Result<usize, Error> {
|
||||
unimplemented!()
|
||||
fn write_at(&self, _offset: usize, buf: &[u8]) -> Result<usize, Error> {
|
||||
self.write(buf)
|
||||
}
|
||||
|
||||
fn readv(&self, bufs: &mut [&mut [u8]]) -> Result<usize, Error> {
|
||||
@ -364,23 +364,38 @@ impl File for StdoutFile {
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Result<Metadata, Error> {
|
||||
unimplemented!()
|
||||
Ok(Metadata {
|
||||
dev: 0,
|
||||
inode: 0,
|
||||
size: 0,
|
||||
blk_size: 0,
|
||||
blocks: 0,
|
||||
atime: Timespec { sec: 0, nsec: 0 },
|
||||
mtime: Timespec { sec: 0, nsec: 0 },
|
||||
ctime: Timespec { sec: 0, nsec: 0 },
|
||||
type_: FileType::File,
|
||||
mode: 0,
|
||||
nlinks: 0,
|
||||
uid: 0,
|
||||
gid: 0
|
||||
})
|
||||
}
|
||||
|
||||
fn set_len(&self, len: u64) -> Result<(), Error> {
|
||||
unimplemented!()
|
||||
fn set_len(&self, _len: u64) -> Result<(), Error> {
|
||||
errno!(EINVAL, "Stdout does not support set_len")
|
||||
}
|
||||
|
||||
fn sync_all(&self) -> Result<(), Error> {
|
||||
unimplemented!()
|
||||
self.sync_data()
|
||||
}
|
||||
|
||||
fn sync_data(&self) -> Result<(), Error> {
|
||||
unimplemented!()
|
||||
self.inner.lock().flush()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn read_entry(&self) -> Result<String, Error> {
|
||||
unimplemented!()
|
||||
errno!(ENOTDIR, "Stdout does not support read_entry")
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &Any {
|
||||
@ -465,23 +480,37 @@ impl File for StdinFile {
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Result<Metadata, Error> {
|
||||
unimplemented!()
|
||||
Ok(Metadata {
|
||||
dev: 0,
|
||||
inode: 0,
|
||||
size: 0,
|
||||
blk_size: 0,
|
||||
blocks: 0,
|
||||
atime: Timespec { sec: 0, nsec: 0 },
|
||||
mtime: Timespec { sec: 0, nsec: 0 },
|
||||
ctime: Timespec { sec: 0, nsec: 0 },
|
||||
type_: FileType::File,
|
||||
mode: 0,
|
||||
nlinks: 0,
|
||||
uid: 0,
|
||||
gid: 0
|
||||
})
|
||||
}
|
||||
|
||||
fn set_len(&self, len: u64) -> Result<(), Error> {
|
||||
unimplemented!()
|
||||
fn set_len(&self, _len: u64) -> Result<(), Error> {
|
||||
errno!(EINVAL, "Stdin does not support set_len")
|
||||
}
|
||||
|
||||
fn sync_all(&self) -> Result<(), Error> {
|
||||
unimplemented!()
|
||||
self.sync_data()
|
||||
}
|
||||
|
||||
fn sync_data(&self) -> Result<(), Error> {
|
||||
unimplemented!()
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn read_entry(&self) -> Result<String, Error> {
|
||||
unimplemented!()
|
||||
errno!(ENOTDIR, "Stdin does not support read_entry")
|
||||
}
|
||||
|
||||
fn as_any(&self) -> &Any {
|
||||
|
Loading…
Reference in New Issue
Block a user