0deba01621
Archive package handles generating and applying diff tar streams based on the OCI diff tar specification. Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
38 lines
580 B
Go
38 lines
580 B
Go
package archive
|
|
|
|
import (
|
|
"syscall"
|
|
"time"
|
|
"unsafe"
|
|
)
|
|
|
|
var (
|
|
minTime = time.Unix(0, 0)
|
|
maxTime time.Time
|
|
)
|
|
|
|
func init() {
|
|
if unsafe.Sizeof(syscall.Timespec{}.Nsec) == 8 {
|
|
// This is a 64 bit timespec
|
|
// os.Chtimes limits time to the following
|
|
maxTime = time.Unix(0, 1<<63-1)
|
|
} else {
|
|
// This is a 32 bit timespec
|
|
maxTime = time.Unix(1<<31-1, 0)
|
|
}
|
|
}
|
|
|
|
func boundTime(t time.Time) time.Time {
|
|
if t.Before(minTime) || t.After(maxTime) {
|
|
return minTime
|
|
}
|
|
|
|
return t
|
|
}
|
|
|
|
func latestTime(t1, t2 time.Time) time.Time {
|
|
if t1.Before(t2) {
|
|
return t2
|
|
}
|
|
return t1
|
|
}
|