changes_unix.go 746 B

123456789101112131415161718192021222324252627
  1. // +build !windows
  2. package archive
  3. import (
  4. "syscall"
  5. "github.com/docker/docker/pkg/system"
  6. )
  7. func statDifferent(oldStat *system.StatT, newStat *system.StatT) bool {
  8. // Don't look at size for dirs, its not a good measure of change
  9. if oldStat.Mode() != newStat.Mode() ||
  10. oldStat.UID() != newStat.UID() ||
  11. oldStat.Gid() != newStat.Gid() ||
  12. oldStat.Rdev() != newStat.Rdev() ||
  13. // Don't look at size for dirs, its not a good measure of change
  14. (oldStat.Mode()&syscall.S_IFDIR != syscall.S_IFDIR &&
  15. (!sameFsTimeSpec(oldStat.Mtim(), newStat.Mtim()) || (oldStat.Size() != newStat.Size()))) {
  16. return true
  17. }
  18. return false
  19. }
  20. func (info *FileInfo) isDir() bool {
  21. return info.parent == nil || info.stat.Mode()&syscall.S_IFDIR != 0
  22. }