From 7ca5fac214c75b3d6b3638b33ba3f22953e6c8fe Mon Sep 17 00:00:00 2001 From: stratact <stratact1@gmail.com> Date: Wed, 23 May 2018 08:00:53 -0700 Subject: [PATCH] Implement `RawFile::dup()` completely --- src/platform/src/rawfile.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/platform/src/rawfile.rs b/src/platform/src/rawfile.rs index d4ee4bee..b4cf2b2e 100644 --- a/src/platform/src/rawfile.rs +++ b/src/platform/src/rawfile.rs @@ -1,20 +1,24 @@ use core::ops::Deref; +use sys::{open, dup, close}; pub struct RawFile(usize); impl RawFile { - pub fn open<T: AsRef<[u8]>>(path: T, flags: usize) -> Result<RawFile> { + pub fn open<T: AsRef<[u8]>>(path: T, flags: usize) -> Result<RawFile, ()> { open(path, flags).map(RawFile) } - pub fn dup(&self, buf: &[u8]) -> Result<RawFile> { - dup(self.0, buf).map(RawFile) + pub fn dup(&self, _buf: &[u8]) -> Result<RawFile, ()> { + match dup(self.0 as i32) { + 0 => Err(()), + n => Ok(RawFile(n as usize)) + } } } impl Drop for RawFile { fn drop(&mut self) { - let _ = close(self.0); + let _ = close(self.0 as i32); } } -- GitLab