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}