39 lines
832 B
Go
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}
|
|
}
|