package utils
import (
"syscall"
"time"
"golang.org/x/sys/unix"
)
var ZeroBtime = time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)
func Atime(s *syscall.Stat_t) time.Time {
return time.Unix(int64(s.Atim.Sec), int64(s.Atim.Nsec))
}
func Btime(path string) (time.Time, error) {
var stx unix.Statx_t
if err := unix.Statx(unix.AT_FDCWD, path, unix.AT_SYMLINK_NOFOLLOW, unix.STATX_BTIME, &stx); err != nil {
return ZeroBtime, err
}
if stx.Mask&unix.STATX_BTIME == 0 {
return ZeroBtime, nil
}
return time.Unix(int64(stx.Btime.Sec), int64(stx.Btime.Nsec)), nil
}
func Ctime(s *syscall.Stat_t) time.Time {
return time.Unix(int64(s.Ctim.Sec), int64(s.Ctim.Nsec))
}
func Mtime(s *syscall.Stat_t) time.Time {
return time.Unix(int64(s.Mtim.Sec), int64(s.Mtim.Nsec))
}