1// +build !windows
2
3package configfile
4
5import (
6	"os"
7	"syscall"
8)
9
10// copyFilePermissions copies file ownership and permissions from "src" to "dst",
11// ignoring any error during the process.
12func copyFilePermissions(src, dst string) {
13	var (
14		mode     os.FileMode = 0600
15		uid, gid int
16	)
17
18	fi, err := os.Stat(src)
19	if err != nil {
20		return
21	}
22	if fi.Mode().IsRegular() {
23		mode = fi.Mode()
24	}
25	if err := os.Chmod(dst, mode); err != nil {
26		return
27	}
28
29	uid = int(fi.Sys().(*syscall.Stat_t).Uid)
30	gid = int(fi.Sys().(*syscall.Stat_t).Gid)
31
32	if uid > 0 && gid > 0 {
33		_ = os.Chown(dst, uid, gid)
34	}
35}
36