From f0f4e2d0af78618b89fdb13d557faee193cbaa4c Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin <kolyshkin@gmail.com> Date: Mon, 19 Aug 2024 17:13:00 -0700 Subject: [PATCH] syscall: add O_DIRECTORY for js Change-Id: I2022fa27b072f9b34413a04a794aeb6d3c02166c Reviewed-on: https://go-review.googlesource.com/c/go/+/606658 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Ian Lance Taylor <iant@google.com> --- src/syscall/fs_js.go | 16 ++++++++++------ src/syscall/syscall_js.go | 13 +++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/syscall/fs_js.go b/src/syscall/fs_js.go index b6138ebeb1e..111ce4f5c1e 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 0e529e03437..c320e34f260 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 ) -- GitLab