| //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) | |
| } | |
| } |