diff options
Diffstat (limited to 'internal/robustio/robustio_posix.go')
-rw-r--r-- | internal/robustio/robustio_posix.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/internal/robustio/robustio_posix.go b/internal/robustio/robustio_posix.go new file mode 100644 index 000000000..8aa13d027 --- /dev/null +++ b/internal/robustio/robustio_posix.go @@ -0,0 +1,28 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !windows && !plan9 +// +build !windows,!plan9 + +// TODO(adonovan): use 'unix' tag when go1.19 can be assumed. + +package robustio + +import ( + "os" + "syscall" + "time" +) + +func getFileID(filename string) (FileID, time.Time, error) { + fi, err := os.Stat(filename) + if err != nil { + return FileID{}, time.Time{}, err + } + stat := fi.Sys().(*syscall.Stat_t) + return FileID{ + device: uint64(stat.Dev), // (int32 on darwin, uint64 on linux) + inode: stat.Ino, + }, fi.ModTime(), nil +} |