mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-13 02:20:47 +01:00
29 lines
713 B
Go
29 lines
713 B
Go
|
package sysfs
|
||
|
|
||
|
import (
|
||
|
"io/fs"
|
||
|
"path"
|
||
|
|
||
|
experimentalsys "github.com/tetratelabs/wazero/experimental/sys"
|
||
|
"github.com/tetratelabs/wazero/sys"
|
||
|
)
|
||
|
|
||
|
// inoFromFileInfo uses stat to get the inode information of the file.
|
||
|
func inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) {
|
||
|
if v, ok := info.Sys().(*sys.Stat_t); ok {
|
||
|
return v.Ino, 0
|
||
|
}
|
||
|
if dirPath == "" {
|
||
|
// This is a FS.File backed implementation which doesn't have access to
|
||
|
// the original file path.
|
||
|
return
|
||
|
}
|
||
|
// Ino is no not in Win32FileAttributeData
|
||
|
inoPath := path.Clean(path.Join(dirPath, info.Name()))
|
||
|
var st sys.Stat_t
|
||
|
if st, errno = lstat(inoPath); errno == 0 {
|
||
|
ino = st.Ino
|
||
|
}
|
||
|
return
|
||
|
}
|