github.com/tetratelabs/wazero@v1.2.1/internal/sysfs/stat.go (about)

     1  package sysfs
     2  
     3  import (
     4  	"io/fs"
     5  	"os"
     6  	"syscall"
     7  
     8  	"github.com/tetratelabs/wazero/internal/fsapi"
     9  	"github.com/tetratelabs/wazero/internal/platform"
    10  )
    11  
    12  func defaultStatFile(f *os.File) (fsapi.Stat_t, syscall.Errno) {
    13  	if t, err := f.Stat(); err != nil {
    14  		return fsapi.Stat_t{}, platform.UnwrapOSError(err)
    15  	} else {
    16  		return statFromFileInfo(t), 0
    17  	}
    18  }
    19  
    20  func StatFromDefaultFileInfo(t fs.FileInfo) fsapi.Stat_t {
    21  	st := fsapi.Stat_t{}
    22  	st.Ino = 0
    23  	st.Dev = 0
    24  	st.Mode = t.Mode()
    25  	st.Nlink = 1
    26  	st.Size = t.Size()
    27  	mtim := t.ModTime().UnixNano() // Set all times to the mod time
    28  	st.Atim = mtim
    29  	st.Mtim = mtim
    30  	st.Ctim = mtim
    31  	return st
    32  }