Skip to content
Snippets Groups Projects
Commit 6d5be41c authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Add truncate

parent 2d578215
No related branches found
No related tags found
No related merge requests found
...@@ -89,6 +89,10 @@ impl FileResource { ...@@ -89,6 +89,10 @@ impl FileResource {
fn sync(&mut self) -> Result<usize> { fn sync(&mut self) -> Result<usize> {
Ok(0) Ok(0)
} }
fn truncate(&mut self, len: usize) -> Result<usize> {
Ok(0)
}
} }
struct FileScheme { struct FileScheme {
...@@ -140,6 +144,9 @@ impl Scheme for FileScheme { ...@@ -140,6 +144,9 @@ impl Scheme for FileScheme {
data.push('\n' as u8); data.push('\n' as u8);
} }
data.extend_from_slice(&name.as_bytes()); data.extend_from_slice(&name.as_bytes());
if child.1.is_dir() {
data.push(b'/');
}
} }
} }
} else { } else {
...@@ -189,7 +196,7 @@ impl Scheme for FileScheme { ...@@ -189,7 +196,7 @@ impl Scheme for FileScheme {
Ok(id) Ok(id)
} }
fn mkdir(&mut self, url: &str, mode: usize) -> Result<usize> { fn mkdir(&mut self, url: &str, _mode: usize) -> Result<usize> {
let path = url.split(':').nth(1).unwrap_or("").trim_matches('/'); let path = url.split(':').nth(1).unwrap_or("").trim_matches('/');
let mut nodes = Vec::new(); let mut nodes = Vec::new();
...@@ -239,6 +246,7 @@ impl Scheme for FileScheme { ...@@ -239,6 +246,7 @@ impl Scheme for FileScheme {
fn unlink(&mut self, url: &str) -> Result<usize> { fn unlink(&mut self, url: &str) -> Result<usize> {
let path = url.split(':').nth(1).unwrap_or("").trim_matches('/'); let path = url.split(':').nth(1).unwrap_or("").trim_matches('/');
let mut nodes = Vec::new(); let mut nodes = Vec::new();
let child = try!(self.path_nodes(path, &mut nodes)); let child = try!(self.path_nodes(path, &mut nodes));
if let Some(parent) = nodes.last() { if let Some(parent) = nodes.last() {
...@@ -300,7 +308,6 @@ impl Scheme for FileScheme { ...@@ -300,7 +308,6 @@ impl Scheme for FileScheme {
} }
fn fsync(&mut self, id: usize) -> Result<usize> { fn fsync(&mut self, id: usize) -> Result<usize> {
println!("fsync {}", id);
if let Some(mut file) = self.files.get_mut(&id) { if let Some(mut file) = self.files.get_mut(&id) {
file.sync() file.sync()
} else { } else {
...@@ -309,8 +316,11 @@ impl Scheme for FileScheme { ...@@ -309,8 +316,11 @@ impl Scheme for FileScheme {
} }
fn ftruncate(&mut self, id: usize, len: usize) -> Result<usize> { fn ftruncate(&mut self, id: usize, len: usize) -> Result<usize> {
println!("ftruncate {}, {}", id, len); if let Some(mut file) = self.files.get_mut(&id) {
Err(Error::new(EBADF)) file.truncate(len)
} else {
Err(Error::new(EBADF))
}
} }
fn close(&mut self, id: usize) -> Result<usize> { fn close(&mut self, id: usize) -> Result<usize> {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment