diff --git a/src/syscall/fs_js.go b/src/syscall/fs_js.go index b6138ebeb1ed530c7d32bb902e9fef4a04b8304a..111ce4f5c1e7c501f6aa22e18f07d231642f4cd4 100644 --- a/src/syscall/fs_js.go +++ b/src/syscall/fs_js.go @@ -23,12 +23,13 @@ var constants = jsFS.Get("constants") var uint8Array = js.Global().Get("Uint8Array") var ( - nodeWRONLY = constants.Get("O_WRONLY").Int() - nodeRDWR = constants.Get("O_RDWR").Int() - nodeCREATE = constants.Get("O_CREAT").Int() - nodeTRUNC = constants.Get("O_TRUNC").Int() - nodeAPPEND = constants.Get("O_APPEND").Int() - nodeEXCL = constants.Get("O_EXCL").Int() + nodeWRONLY = constants.Get("O_WRONLY").Int() + nodeRDWR = constants.Get("O_RDWR").Int() + nodeCREATE = constants.Get("O_CREAT").Int() + nodeTRUNC = constants.Get("O_TRUNC").Int() + nodeAPPEND = constants.Get("O_APPEND").Int() + nodeEXCL = constants.Get("O_EXCL").Int() + nodeDIRECTORY = constants.Get("O_DIRECTORY").Int() ) type jsFile struct { @@ -83,6 +84,9 @@ func Open(path string, openmode int, perm uint32) (int, error) { if openmode&O_SYNC != 0 { return 0, errors.New("syscall.Open: O_SYNC is not supported by js/wasm") } + if openmode&O_DIRECTORY != 0 { + flags |= nodeDIRECTORY + } jsFD, err := fsCall("open", path, flags, perm) if err != nil { diff --git a/src/syscall/syscall_js.go b/src/syscall/syscall_js.go index 0e529e0343738aea14fbec9884da47b5559f8801..c320e34f2601cb0f922137ac908f955601d9de78 100644 --- a/src/syscall/syscall_js.go +++ b/src/syscall/syscall_js.go @@ -128,12 +128,13 @@ const ( O_WRONLY = 1 O_RDWR = 2 - O_CREAT = 0100 - O_CREATE = O_CREAT - O_TRUNC = 01000 - O_APPEND = 02000 - O_EXCL = 0200 - O_SYNC = 010000 + O_CREAT = 0100 + O_CREATE = O_CREAT + O_TRUNC = 01000 + O_APPEND = 02000 + O_EXCL = 0200 + O_SYNC = 010000 + O_DIRECTORY = 020000 O_CLOEXEC = 0 )