Files
wazero/sys/stat_example_test.go
2023-07-10 11:46:20 +08:00

39 lines
832 B
Go

package sys_test
import (
"io/fs"
"math"
"github.com/tetratelabs/wazero/sys"
)
var (
walltime sys.Walltime
info fs.FileInfo
st sys.Stat_t
)
// This shows typical conversions to sys.EpochNanos type, for sys.Stat_t fields.
func Example_epochNanos() {
// Convert an adapted fs.File's fs.FileInfo to Mtim.
st.Mtim = info.ModTime().UnixNano()
// Generate a fake Atim using sys.Walltime passed to wazero.ModuleConfig.
sec, nsec := walltime()
st.Atim = sec*1e9 + int64(nsec)
}
type fileInfoWithSys struct {
fs.FileInfo
st sys.Stat_t
}
func (f *fileInfoWithSys) Sys() any { return &f.st }
// This shows how to return data not defined in fs.FileInfo, notably sys.Inode.
func Example_inode() {
st := sys.NewStat_t(info)
st.Ino = math.MaxUint64 // arbitrary non-zero value
info = &fileInfoWithSys{info, st}
}