pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/system/user_bsd.go (about)

     1  //go:build darwin || freebsd
     2  // +build darwin freebsd
     3  
     4  package system
     5  
     6  // ////////////////////////////////////////////////////////////////////////////////// //
     7  //                                                                                    //
     8  //                         Copyright (c) 2022 ESSENTIAL KAOS                          //
     9  //      Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>     //
    10  //                                                                                    //
    11  // ////////////////////////////////////////////////////////////////////////////////// //
    12  
    13  import (
    14  	"syscall"
    15  	"time"
    16  )
    17  
    18  // ////////////////////////////////////////////////////////////////////////////////// //
    19  
    20  // getTimes is copy of fsutil.GetTimes
    21  func getTimes(path string) (time.Time, time.Time, time.Time, error) {
    22  	if path == "" {
    23  		return time.Time{}, time.Time{}, time.Time{}, ErrEmptyPath
    24  	}
    25  
    26  	var stat = &syscall.Stat_t{}
    27  
    28  	err := syscall.Stat(path, stat)
    29  
    30  	if err != nil {
    31  		return time.Time{}, time.Time{}, time.Time{}, err
    32  	}
    33  
    34  	return time.Unix(int64(stat.Atimespec.Sec), int64(stat.Atimespec.Nsec)),
    35  		time.Unix(int64(stat.Mtimespec.Sec), int64(stat.Mtimespec.Nsec)),
    36  		time.Unix(int64(stat.Ctimespec.Sec), int64(stat.Ctimespec.Nsec)),
    37  		nil
    38  }