aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/fs_js.go
AgeCommit message (Collapse)Author
2025-02-18syscall: disable O_DIRECTORY on Windows for js/wasmZxilly
O_DIRECTORY is not available on all platforms, as described at https://nodejs.org/docs/latest/api/fs.html#file-open-constants . On Windows, only O_APPEND, O_CREAT, O_EXCL, O_RDONLY, O_RDWR, O_TRUNC, O_WRONLY, and UV_FS_O_FILEMAP are available. Fixes #71758 Change-Id: Iacc890ba9a30dcd75eb746ec324fa0c3e368048e GitHub-Last-Rev: a0160e8fc82583c4f903ae165fe9f204896cf56d GitHub-Pull-Request: golang/go#71770 Reviewed-on: https://go-review.googlesource.com/c/go/+/650015 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org>
2024-08-21syscall: add O_DIRECTORY for jsKir Kolyshkin
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>
2024-08-09syscall,misc/wasm: fix path expansion on non-unix platformsZxilly
When running a go binary compiled to wasm using node.js on a Windows platform, the absolute path passed in is also incorrectly forced to expand. For example: E:\Project\CS_Project\gsv\testdata\result.gob.gz will results to open C:\Users\zxilly\AppData\Local\wasm-exec\go1.23rc1\E:\Project\CS_Project\gsv\testdata\result.gob.gz: No such file or directory C:\Users\zxilly\AppData\Local\wasm-exec\go1.23rc1 is the place of wasm_exec_node.js Fixes: #68820 Change-Id: Ic30c6242302f8915ac1b8ea9f24546935cbb791e GitHub-Last-Rev: f35ff1a2eef86c3b6431bb2be75448c3ac553f1b GitHub-Pull-Request: golang/go#68255 Reviewed-on: https://go-review.googlesource.com/c/go/+/595797 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
2023-05-11os: make Chtimes accept empty time values to skip file time modificationConstantin Konstantinidis
Empty time value time.Time{} leaves the corresponding time of the file unchanged. Fixes #32558 Change-Id: I1aff42f30668ff505ecec2e9509d8f2b8e4b1b6a Reviewed-on: https://go-review.googlesource.com/c/go/+/219638 TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
2022-11-18all: add missing periods in commentscui fliter
Change-Id: I69065f8adf101fdb28682c55997f503013a50e29 Reviewed-on: https://go-review.googlesource.com/c/go/+/449757 Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Joedian Reid <joedian@golang.org> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Joedian Reid <joedian@golang.org> Run-TryBot: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
2021-12-13all: gofmt -w -r 'interface{} -> any' srcRuss Cox
And then revert the bootstrap cmd directories and certain testdata. And adjust tests as needed. Not reverting the changes in std that are bootstrapped, because some of those changes would appear in API docs, and we want to use any consistently. Instead, rewrite 'any' to 'interface{}' in cmd/dist for those directories when preparing the bootstrap copy. A few files changed as a result of running gofmt -w not because of interface{} -> any but because they hadn't been updated for the new //go:build lines. Fixes #49884. Change-Id: Ie8045cba995f65bd79c694ec77a1b3d1fe01bb09 Reviewed-on: https://go-review.googlesource.com/c/go/+/368254 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
2021-10-28all: go fix -fix=buildtag std cmd (except for bootstrap deps, vendor)Russ Cox
When these packages are released as part of Go 1.18, Go 1.16 will no longer be supported, so we can remove the +build tags in these files. Ran go fix -fix=buildtag std cmd and then reverted the bootstrapDirs as defined in src/cmd/dist/buildtool.go, which need to continue to build with Go 1.4 for now. Also reverted src/vendor and src/cmd/vendor, which will need to be updated in their own repos first. Manual changes in runtime/pprof/mprof_test.go to adjust line numbers. For #41184. Change-Id: Ic0f93f7091295b6abc76ed5cd6e6746e1280861e Reviewed-on: https://go-review.googlesource.com/c/go/+/344955 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
2021-02-20all: go fmt std cmd (but revert vendor)Russ Cox
Make all our package sources use Go 1.17 gofmt format (adding //go:build lines). Part of //go:build change (#41184). See https://golang.org/design/draft-gobuild Change-Id: Ia0534360e4957e58cd9a18429c39d0e32a6addb4 Reviewed-on: https://go-review.googlesource.com/c/go/+/294430 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-10-13syscall: remove dependency on ioRuss Cox
Keep syscall and io separated; neither should depend on the other. Change-Id: Icdd61bd0c05d874cabd7b5ae6631dd09dec90112 Reviewed-on: https://go-review.googlesource.com/c/go/+/243902 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2020-03-01syscall: fix Fchdir on js/wasmRichard Musiol
NodeJS does not support fchdir so it has to be emulated with chdir by saving the path when opening a directory. However, if the path opened is relative, saving this path is not sufficient, because after changing the working directory the path does not resolve correctly any more, thus a subsequent fd.Chdir() fails. This change fixes the issue by resolving a relative path when opening the directory and saving the absolute path instead. Fixes #37448 Change-Id: Id6bc8c4232b0019fc11e850599a526336608ce54 Reviewed-on: https://go-review.googlesource.com/c/go/+/221717 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
2020-02-22syscall: release a js.Func object in fsCallHajime Hoshi
(This is a reland of golang.org/cl/217417.) A js.Func object in fsCall was created for each call but never released. This CL fixes this. Change-Id: Ifc0efb997c9b3e04641839691ccc04de61ef28d6 Reviewed-on: https://go-review.googlesource.com/c/go/+/220537 Run-TryBot: Hajime Hoshi <hajimehoshi@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
2020-02-04syscall: Revert "release a js.Func object in fsCall"Dmitri Shuralyov
This reverts CL 217417 (commit 753d56d3642eb83848aa39e65982a9fc77e722d7). This change was unintentionally submitted to master during the Go 1.14 code freeze; it should be sent again for Go 1.15. Change-Id: Ie790342f227ae3adfc5f9a90ce3abdc2c9be619b Reviewed-on: https://go-review.googlesource.com/c/go/+/217721 Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Carlos Amedee <carlos@golang.org>
2020-02-02syscall: release a js.Func object in fsCallHajime Hoshi
A js.Func object in fsCall was created for each call but never released. This CL fixes this. Change-Id: I2e2b504cbf4fb130b8cfe890a66d3a66aadf56a4 Reviewed-on: https://go-review.googlesource.com/c/go/+/217417 Run-TryBot: Hajime Hoshi <hajimehoshi@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Agniva De Sarker <agniva.quicksilver@gmail.com> Reviewed-by: Richard Musiol <neelance@gmail.com>
2019-12-05os: reset dirinfo when seeking on DarwinKeith Randall
The first Readdirnames calls opendir and caches the result. The behavior of that cached opendir result isn't specified on a seek of the underlying fd. Free the opendir result on a seek so that we'll allocate a new one the next time around. Also fix wasm behavior in this regard, so that a seek to the file start resets the Readdirnames position, regardless of platform. p.s. I hate the Readdirnames API. Fixes #35767. Change-Id: Ieffb61b3c5cdd42591f69ab13f932003966f2297 Reviewed-on: https://go-review.googlesource.com/c/go/+/209961 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2019-11-04syscall/js: garbage collect references to JavaScript valuesRichard Musiol
The js.Value struct now contains a pointer, so a finalizer can determine if the value is not referenced by Go any more. Unfortunately this breaks Go's == operator with js.Value. This change adds a new Equal method to check for the equality of two Values. This is a breaking change. The == operator is now disallowed to not silently break code. Additionally the helper methods IsUndefined, IsNull and IsNaN got added. Fixes #35111 Change-Id: I58a50ca18f477bf51a259c668a8ba15bfa76c955 Reviewed-on: https://go-review.googlesource.com/c/go/+/203600 Run-TryBot: Richard Musiol <neelance@gmail.com> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-09-04syscall: redirect writes to runtime.write in faketime modeAustin Clements
If the faketime build tag is set, this causes syscall.Write for FDs 1 and 2 to redirect to runtime.write, since that's where we'll apply the faketime framing. This is equivalent to what nacl currently does in naclFile.write. We do this on all of the platforms except nacl, which has its own faketime support and we're about to remove, and Windows, which would require other changes to support faketime so we're leaving alone for now. Updates #30439. Change-Id: I138a5ca63577d92d15b5437d037bd3159fa84ee7 Reviewed-on: https://go-review.googlesource.com/c/go/+/192739 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2019-05-24syscall/js: replace TypedArrayOf with CopyBytesToGo/CopyBytesToJSRichard Musiol
The typed arrays returned by TypedArrayOf were backed by WebAssembly memory. They became invalid each time we grow the WebAssembly memory. This made them very error prone and hard to use correctly. This change removes TypedArrayOf completely and instead introduces CopyBytesToGo and CopyBytesToJS for copying bytes between a byte slice and an Uint8Array. This breaking change is still allowed for the syscall/js package. Fixes #31980. Fixes #31812. Change-Id: I14c76fdd60b48dd517c1593972a56d04965cb272 Reviewed-on: https://go-review.googlesource.com/c/go/+/177537 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2019-04-30syscall: on wasm, do not use typed array asynchronouslyRichard Musiol
The underlying buffer of a typed array becomes invalid as soon as we grow the WebAssembly memory, which can happen at any time while Go code runs. This is a known limitation, see https://golang.org/cl/155778. As a consequence, using a typed array with one of the asynchronous read/write operations of Node.js' fs module is dangerous, since it may become invalid while the asynchronous operation has not finished yet. The result of this situation is most likely undefined. I am not aware of any nice solution to this issue, so this change adds a workaround of using an additional typed array which is not backed by WebAssembly memory and copying the bytes between the two typed arrays. Maybe WebAssembly will come up with a better solution in the future. Fixes #31702. Change-Id: Iafc2a0fa03c81db414520bd45a1a17c00080b61e Reviewed-on: https://go-review.googlesource.com/c/go/+/174304 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2019-04-09syscall: gofmt -w -sMikio Hara
Change-Id: Ib46f1a528e16cd0c2617defbf4dcd1f1b582cdc2 Reviewed-on: https://go-review.googlesource.com/c/go/+/171101 Run-TryBot: Mikio Hara <mikioh.public.networking@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2019-03-22os,syscall: implement functions related to uid, gid and pid on js/wasmRichard Musiol
This change implements the following functions on js/wasm: - os.Chown - os.Fchown - os.Lchown - syscall.Getuid - syscall.Getgid - syscall.Geteuid - syscall.Getegid - syscall.Getgroups - syscall.Getpid - syscall.Getppid - syscall.Umask Change-Id: Icdb0fafc02c9df6e9e3573542f8499c3464dc671 Reviewed-on: https://go-review.googlesource.com/c/go/+/154157 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-12-13syscall/js: rename js.Callback to js.FuncRichard Musiol
The name "Callback" does not fit to all use cases of js.Callback. This commit changes its name to Func. Accordingly NewCallback gets renamed to FuncOf, which matches ValueOf and TypedArrayOf. The package syscall/js is currently exempt from Go's compatibility promise and js.Callback is already affected by a breaking change in this release cycle. See #28711 for details. Fixes #28711 Change-Id: I2c380970c3822bed6a3893909672c15d0cbe9da3 Reviewed-on: https://go-review.googlesource.com/c/153559 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-11-10all: add support for synchronous callbacks to js/wasmRichard Musiol
With this change, callbacks returned by syscall/js.NewCallback get executed synchronously. This is necessary for the APIs of many JavaScript libraries. A callback triggered during a call from Go to JavaScript gets executed on the same goroutine. A callback triggered by JavaScript's event loop gets executed on an extra goroutine. Fixes #26045 Fixes #27441 Change-Id: I591b9e85ab851cef0c746c18eba95fb02ea9e85b Reviewed-on: https://go-review.googlesource.com/c/142004 Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-10-04syscall: use asynchronous operations on js/wasmRichard Musiol
This commit makes syscall on js/wasm use the asynchronous variants of functions in Node.js' fs module. This enables concurrency and allows the API of the fs module to be implemented with an alternative backend that only supports asynchronous operations. Updates #26051. Change-Id: Ibe1dcc988469fc11c3b8d8d49de439c12ddaafce Reviewed-on: https://go-review.googlesource.com/c/137236 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-07-31syscall: remove support for O_NONBLOCK and O_SYNC on js/wasmRichard Musiol
This commit removes O_NONBLOCK on js/wasm. O_SYNC can't be removed, because it is referenced by the os package, so instead its use returns an error. On Windows, the options O_NONBLOCK and O_SYNC are not available when opening a file with Node.js. This caused the initialization of the syscall package to panic. The simplest solution is to not support these two options on js/wasm at all. Code written for js/wasm is supposed to be portable, so platform-specific options should not be used. Fixes #26524. Change-Id: I366aa3cdcfa59dfa9dc513368259f363ca090f00 Reviewed-on: https://go-review.googlesource.com/126600 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-06-27syscall/js: add TypedArrayOfRichard Musiol
The new function js.TypedArrayOf returns a JavaScript typed array for a given slice. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays This change also changes js.ValueOf to not accept a []byte any more. Fixes #25532. Change-Id: I8c7bc98ca4e21c3514d19eee7a1f92388d74ab2a Reviewed-on: https://go-review.googlesource.com/121215 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-06-25syscall/js: turn constant package vars into functionsRichard Musiol
This is so the values can not be changed and the type is easy to see. Requested on https://go-review.googlesource.com/c/go/+/120561. Change-Id: If2ed48ca3ba8874074687bfb2375d2f5592e8e0d Reviewed-on: https://go-review.googlesource.com/120564 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-06-01os: add js/wasm architectureRichard Musiol
This commit adds the js/wasm architecture to the os package. Access to the actual file system is supported through Node.js. Updates #18892 Change-Id: I6fa642fb294ca020b2c545649d4324d981aa0408 Reviewed-on: https://go-review.googlesource.com/109977 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>