| //go:build !windows |
| // +build !windows |
| |
| package archive |
| |
| import "golang.org/x/sys/unix" |
| |
| // overrideUmask sets current process's file mode creation mask to newmask |
| // and returns a function to restore it. |
| // |
| // WARNING for readers stumbling upon this code. Changing umask in a multi- |
| // threaded environment isn't safe. Don't use this without understanding the |
| // risks, and don't export this function for others to use (we shouldn't even |
| // be using this ourself). |
| // |
| // FIXME(thaJeztah): we should get rid of these hacks if possible. |
| func overrideUmask(newMask int) func() { |
| oldMask := unix.Umask(newMask) |
| return func() { |
| unix.Umask(oldMask) |
| } |
| } |