MCPcopy Create free account
hub / github.com/Starry-OS/StarryOS / rename

Method rename

api/src/vfs/tmp.rs:428–451  ·  view source on GitHub ↗

TODO: atomicity

(&self, src_name: &str, dst_dir: &DirNode, dst_name: &str)

Source from the content-addressed store, hash-verified

426
427 // TODO: atomicity
428 fn rename(&self, src_name: &str, dst_dir: &DirNode, dst_name: &str) -> VfsResult<()> {
429 let dst_node = dst_dir.downcast::<Self>()?;
430 if let Ok(entry) = dst_dir.lookup(dst_name) {
431 let src_entry = self.lookup(src_name)?;
432 if entry.inode() == src_entry.inode() {
433 return Ok(());
434 }
435 }
436
437 let src_entry = self
438 .inode
439 .as_dir()?
440 .entries
441 .lock()
442 .remove(src_name)
443 .ok_or(VfsError::NotFound)?;
444 dst_node
445 .inode
446 .as_dir()?
447 .entries
448 .lock()
449 .insert(dst_name.into(), src_entry);
450 Ok(())
451 }
452}
453
454impl Drop for MemoryNode {

Callers 1

sys_renameat2Function · 0.45

Calls 4

as_dirMethod · 0.80
insertMethod · 0.80
lookupMethod · 0.45
inodeMethod · 0.45

Tested by

no test coverage detected