diff --git a/config/module/inode.go b/config/module/inode.go index a49e8a19d..20a951f06 100644 --- a/config/module/inode.go +++ b/config/module/inode.go @@ -1,4 +1,4 @@ -// +build !windows +// +build !windows !freebsd package module diff --git a/config/module/inode_freebsd.go b/config/module/inode_freebsd.go new file mode 100644 index 000000000..ff658761a --- /dev/null +++ b/config/module/inode_freebsd.go @@ -0,0 +1,19 @@ +package module + +import ( + "fmt" + "os" + "syscall" +) + +// lookup the inode of a file on posix systems +func inode(path string) (uint64, error) { + stat, err := os.Stat(path) + if err != nil { + return 0, err + } + if st, ok := stat.Sys().(*syscall.Stat_t); ok { + return uint64(st.Ino), nil + } + return 0, fmt.Errorf("could not determine file inode") +}