| 408 | } |
| 409 | |
| 410 | fn unlink(&self, name: &str) -> VfsResult<()> { |
| 411 | let dir = self.inode.as_dir()?; |
| 412 | let mut entries = dir.entries.lock(); |
| 413 | |
| 414 | let Some(entry) = entries.get(name) else { |
| 415 | return Err(VfsError::NotFound); |
| 416 | }; |
| 417 | if let NodeContent::Dir(DirContent { entries }) = &entry.get().content |
| 418 | && entries.lock().len() > 2 |
| 419 | { |
| 420 | return Err(VfsError::DirectoryNotEmpty); |
| 421 | } |
| 422 | entries.remove(name); |
| 423 | |
| 424 | Ok(()) |
| 425 | } |
| 426 | |
| 427 | // TODO: atomicity |
| 428 | fn rename(&self, src_name: &str, dst_dir: &DirNode, dst_name: &str) -> VfsResult<()> { |