aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpanicbit <[email protected]>2016-08-20 04:35:56 +0200
committerpanicbit <[email protected]>2016-08-20 04:35:56 +0200
commit94e927f967c1d31b4ec379445104aef2d4c90e91 (patch)
treeda26581bf025dc543e95021d866a076d0bbcc28c
parentDelete functions that were removed from ctrulib (diff)
downloadctru-rs-94e927f967c1d31b4ec379445104aef2d4c90e91.tar.xz
ctru-rs-94e927f967c1d31b4ec379445104aef2d4c90e91.zip
Add read method to fs File
-rw-r--r--src/services/fs.rs29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/services/fs.rs b/src/services/fs.rs
index 688341e..247a5b1 100644
--- a/src/services/fs.rs
+++ b/src/services/fs.rs
@@ -53,6 +53,7 @@ pub struct Archive {
pub struct File {
handle: u32,
+ offset: u64,
}
pub struct OpenOptions {
@@ -111,6 +112,29 @@ impl Archive {
}
}
+impl File {
+ 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 {
pub fn read(&mut self, read: bool) -> &mut OpenOptions {
self.read = read;
@@ -140,7 +164,10 @@ impl OpenOptions {
if ret < 0 {
Err(ret)
} else {
- Ok(File { handle: file_handle })
+ Ok(File {
+ handle: file_handle,
+ offset: 0,
+ })
}
}
}