linux.go 578 B

1234567891011121314151617181920212223242526272829303132
  1. //go:build linux
  2. package get_access_time
  3. import (
  4. "os"
  5. "syscall"
  6. "time"
  7. )
  8. type OneGetAccessTime struct {
  9. }
  10. func (d OneGetAccessTime) GetOSName() string {
  11. return "linux"
  12. }
  13. func (d OneGetAccessTime) GetAccessTime(fileName string) (time.Time, error) {
  14. // return now time and err if file does not exist
  15. fi, err := os.Stat(fileName)
  16. if os.IsNotExist(err) {
  17. return time.Now(), err
  18. }
  19. aTime := fi.Sys().(*syscall.Stat_t).Atim
  20. return timeSpecToTime(aTime), nil
  21. }
  22. func timeSpecToTime(ts syscall.Timespec) time.Time {
  23. return time.Unix(int64(ts.Sec), int64(ts.Nsec))
  24. }