2022-03-28 20:23:47 +00:00
|
|
|
//go:build freebsd || darwin || netbsd
|
2018-06-16 06:48:45 +00:00
|
|
|
// +build freebsd darwin netbsd
|
2018-01-03 20:53:45 +00:00
|
|
|
|
|
|
|
package fs
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"syscall"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// extendedStat extracts info into an ExtendedFileInfo for unix based operating systems.
|
2024-11-03 15:01:59 +00:00
|
|
|
func extendedStat(fi os.FileInfo) *ExtendedFileInfo {
|
2022-11-12 10:40:15 +00:00
|
|
|
s := fi.Sys().(*syscall.Stat_t)
|
2018-01-03 20:53:45 +00:00
|
|
|
|
2024-11-03 15:01:59 +00:00
|
|
|
return &ExtendedFileInfo{
|
2024-11-30 15:58:04 +00:00
|
|
|
Name: fi.Name(),
|
|
|
|
Mode: fi.Mode(),
|
|
|
|
|
2018-01-03 20:53:45 +00:00
|
|
|
DeviceID: uint64(s.Dev),
|
|
|
|
Inode: uint64(s.Ino),
|
|
|
|
Links: uint64(s.Nlink),
|
|
|
|
UID: s.Uid,
|
|
|
|
GID: s.Gid,
|
|
|
|
Device: uint64(s.Rdev),
|
|
|
|
BlockSize: int64(s.Blksize),
|
|
|
|
Blocks: s.Blocks,
|
|
|
|
Size: s.Size,
|
|
|
|
|
|
|
|
AccessTime: time.Unix(s.Atimespec.Unix()),
|
|
|
|
ModTime: time.Unix(s.Mtimespec.Unix()),
|
2019-03-20 01:27:37 +00:00
|
|
|
ChangeTime: time.Unix(s.Ctimespec.Unix()),
|
2018-01-03 20:53:45 +00:00
|
|
|
}
|
|
|
|
}
|