1//go:build !windows && !plan9
2// +build !windows,!plan9
3
4package copy
5
6import (
7 "os"
8 "syscall"
9)
10
11func preserveOwner(src, dest string, info fileInfo) (err error) {
12 if info == nil {
13 if info, err = os.Stat(src); err != nil {
14 return err
15 }
16 }
17 if stat, ok := info.Sys().(*syscall.Stat_t); ok {
18 if err := os.Chown(dest, int(stat.Uid), int(stat.Gid)); err != nil {
19 return err
20 }
21 }
22 return nil
23}