| package lumberjack | |
| import ( | |
| "os" | |
| "syscall" | |
| ) | |
| // osChown is a var so we can mock it out during tests. | |
| var osChown = os.Chown | |
| func chown(name string, info os.FileInfo) error { | |
| f, err := os.OpenFile(name, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, info.Mode()) | |
| if err != nil { | |
| return err | |
| } | |
| f.Close() | |
| stat := info.Sys().(*syscall.Stat_t) | |
| return osChown(name, int(stat.Uid), int(stat.Gid)) | |
| } |