github.com/gaukas/wazerofs@v0.1.0/sysfs/ino_windows.go (about)

     1  package sysfs
     2  
     3  import (
     4  	"io/fs"
     5  	"path"
     6  
     7  	experimentalsys "github.com/tetratelabs/wazero/experimental/sys"
     8  	"github.com/tetratelabs/wazero/sys"
     9  )
    10  
    11  // inoFromFileInfo uses stat to get the inode information of the file.
    12  func inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) {
    13  	if v, ok := info.Sys().(*sys.Stat_t); ok {
    14  		return v.Ino, 0
    15  	}
    16  	if dirPath == "" {
    17  		// This is a FS.File backed implementation which doesn't have access to
    18  		// the original file path.
    19  		return
    20  	}
    21  	// Ino is no not in Win32FileAttributeData
    22  	inoPath := path.Clean(path.Join(dirPath, info.Name()))
    23  	var st sys.Stat_t
    24  	if st, errno = lstat(inoPath); errno == 0 {
    25  		ino = st.Ino
    26  	}
    27  	return
    28  }