// 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 }