Dir::open_file can just pass read/write as bools, centralizing FileCaps decoding

this way the impls of File/Dir don't need to know about any caps!
This commit is contained in:
Pat Hickey
2021-01-29 21:04:34 -08:00
parent e1ca5d171c
commit 3d406ff50e
3 changed files with 14 additions and 12 deletions

View File

@@ -813,7 +813,11 @@ impl<'a> wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx {
let file_caps = dir_entry.child_file_caps(FileCaps::from(&fs_rights_base));
let dir = dir_entry.get_cap(required_caps)?;
let file = dir.open_file(symlink_follow, path.deref(), oflags, file_caps, fdflags)?;
let read = file_caps.contains(FileCaps::READ);
let write = file_caps.contains(FileCaps::WRITE)
|| file_caps.contains(FileCaps::ALLOCATE)
|| file_caps.contains(FileCaps::FILESTAT_SET_SIZE);
let file = dir.open_file(symlink_follow, path.deref(), oflags, read, write, fdflags)?;
drop(dir);
let fd = table.push(Box::new(FileEntry::new(file_caps, file)))?;
Ok(types::Fd::from(fd))