mirror of https://go.googlesource.com/go
32 lines
818 B
Go
32 lines
818 B
Go
// Copyright 2023 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build wasip1
|
|
|
|
package os
|
|
|
|
import (
|
|
"internal/poll"
|
|
"syscall"
|
|
)
|
|
|
|
func open(filePath string, flag int, perm uint32) (int, poll.SysFile, error) {
|
|
if filePath == "" {
|
|
return -1, poll.SysFile{}, syscall.EINVAL
|
|
}
|
|
absPath := filePath
|
|
// os.(*File).Chdir is emulated by setting the working directory to the
|
|
// absolute path that this file was opened at, which is why we have to
|
|
// resolve and capture it here.
|
|
if filePath[0] != '/' {
|
|
wd, err := syscall.Getwd()
|
|
if err != nil {
|
|
return -1, poll.SysFile{}, err
|
|
}
|
|
absPath = joinPath(wd, filePath)
|
|
}
|
|
fd, err := syscall.Open(absPath, flag, perm)
|
|
return fd, poll.SysFile{Path: absPath}, err
|
|
}
|