Browse Source

Merge pull request #1 from panicbit/filesystem

Add open and len methods to fs File
pull/10/head
FenrirWolf 8 years ago committed by GitHub
parent
commit
d582acb7f6
  1. 41
      src/services/fs.rs

41
src/services/fs.rs

@ -53,6 +53,7 @@ pub struct Archive {
pub struct File { pub struct File {
handle: u32, handle: u32,
offset: u64,
} }
pub struct OpenOptions { pub struct OpenOptions {
@ -111,6 +112,41 @@ impl Archive {
} }
} }
impl File {
pub fn len(&self) -> Result<u64, i32> {
unsafe {
let mut len = 0;
let r = FSFILE_GetSize(self.handle, &mut len);
if r < 0 {
Err(r)
} else {
Ok(len)
}
}
}
pub fn read(&mut self, buf: &mut [u8]) -> Result<u32, i32> {
unsafe {
let mut n_read = 0;
let r = FSFILE_Read(
self.handle,
&mut n_read,
self.offset,
buf.as_mut_ptr() as _,
buf.len() as u32
);
self.offset += n_read as u64;
if r < 0 {
Err(r)
} else {
Ok(n_read)
}
}
}
}
impl OpenOptions { impl OpenOptions {
pub fn read(&mut self, read: bool) -> &mut OpenOptions { pub fn read(&mut self, read: bool) -> &mut OpenOptions {
self.read = read; self.read = read;
@ -140,7 +176,10 @@ impl OpenOptions {
if ret < 0 { if ret < 0 {
Err(ret) Err(ret)
} else { } else {
Ok(File { handle: file_handle }) Ok(File {
handle: file_handle,
offset: 0,
})
} }
} }
} }

Loading…
Cancel
Save