1
Fork 0

Fix wasi::fs::OpenOptions to imply write when append is on

This commit is contained in:
Yuto Kawamura 2020-08-05 20:30:06 +09:00
parent 7f8ff84b51
commit 165a6e597e

View file

@ -46,6 +46,7 @@ pub struct DirEntry {
pub struct OpenOptions { pub struct OpenOptions {
read: bool, read: bool,
write: bool, write: bool,
append: bool,
dirflags: wasi::Lookupflags, dirflags: wasi::Lookupflags,
fdflags: wasi::Fdflags, fdflags: wasi::Fdflags,
oflags: wasi::Oflags, oflags: wasi::Oflags,
@ -270,8 +271,9 @@ impl OpenOptions {
} }
} }
pub fn append(&mut self, set: bool) { pub fn append(&mut self, append: bool) {
self.fdflag(wasi::FDFLAGS_APPEND, set); self.append = append;
self.fdflag(wasi::FDFLAGS_APPEND, append);
} }
pub fn dsync(&mut self, set: bool) { pub fn dsync(&mut self, set: bool) {
@ -321,7 +323,7 @@ impl OpenOptions {
base |= wasi::RIGHTS_FD_READ; base |= wasi::RIGHTS_FD_READ;
base |= wasi::RIGHTS_FD_READDIR; base |= wasi::RIGHTS_FD_READDIR;
} }
if self.write { if self.write || self.append {
base |= wasi::RIGHTS_FD_WRITE; base |= wasi::RIGHTS_FD_WRITE;
base |= wasi::RIGHTS_FD_DATASYNC; base |= wasi::RIGHTS_FD_DATASYNC;
base |= wasi::RIGHTS_FD_ALLOCATE; base |= wasi::RIGHTS_FD_ALLOCATE;