owner_others.go
1//go:build !windows
2
3package fsext
4
5import (
6 "os"
7 "syscall"
8)
9
10// Owner retrieves the user ID of the owner of the file or directory at the
11// specified path.
12func Owner(path string) (int, error) {
13 info, err := os.Stat(path)
14 if err != nil {
15 return 0, err
16 }
17 var uid int
18 if stat, ok := info.Sys().(*syscall.Stat_t); ok {
19 uid = int(stat.Uid)
20 } else {
21 uid = os.Getuid()
22 }
23 return uid, nil
24}