chown_linux.go

 1package lumberjack
 2
 3import (
 4	"os"
 5	"syscall"
 6)
 7
 8// osChown is a var so we can mock it out during tests.
 9var osChown = os.Chown
10
11func chown(name string, info os.FileInfo) error {
12	f, err := os.OpenFile(name, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, info.Mode())
13	if err != nil {
14		return err
15	}
16	f.Close()
17	stat := info.Sys().(*syscall.Stat_t)
18	return osChown(name, int(stat.Uid), int(stat.Gid))
19}