sys: compile volume-path regex once, and update GoDoc
Ideally, we would construct this lazily, but adding a function and a sync.Once felt like a bit "too much". Also updated the GoDoc for some functions to better describe what they do. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
		| @@ -25,19 +25,22 @@ import ( | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// SddlAdministratorsLocalSystem is local administrators plus NT AUTHORITY\System | ||||
| 	SddlAdministratorsLocalSystem = "D:P(A;OICI;GA;;;BA)(A;OICI;GA;;;SY)" | ||||
| ) | ||||
| // SddlAdministratorsLocalSystem is local administrators plus NT AUTHORITY\System. | ||||
| const SddlAdministratorsLocalSystem = "D:P(A;OICI;GA;;;BA)(A;OICI;GA;;;SY)" | ||||
|  | ||||
| // MkdirAllWithACL is a wrapper for MkdirAll that creates a directory | ||||
| // ACL'd for Builtin Administrators and Local System. | ||||
| func MkdirAllWithACL(path string, perm os.FileMode) error { | ||||
| // volumePath is a regular expression to check if a path is a Windows | ||||
| // volume path (e.g., "\\?\Volume{4c1b02c1-d990-11dc-99ae-806e6f6e6963}". | ||||
| var volumePath = regexp.MustCompile(`^\\\\\?\\Volume{[a-z0-9-]+}$`) | ||||
|  | ||||
| // MkdirAllWithACL is a custom version of os.MkdirAll modified for use on Windows | ||||
| // so that it is both volume path aware, and to create a directory | ||||
| // an appropriate SDDL defined ACL for Builtin Administrators and Local System. | ||||
| func MkdirAllWithACL(path string, _ os.FileMode) error { | ||||
| 	return mkdirall(path, true) | ||||
| } | ||||
|  | ||||
| // MkdirAll implementation that is volume path aware for Windows. It can be used | ||||
| // as a drop-in replacement for os.MkdirAll() | ||||
| // MkdirAll is a custom version of os.MkdirAll that is volume path aware for | ||||
| // Windows. It can be used as a drop-in replacement for os.MkdirAll. | ||||
| func MkdirAll(path string, _ os.FileMode) error { | ||||
| 	return mkdirall(path, false) | ||||
| } | ||||
| @@ -46,7 +49,7 @@ func MkdirAll(path string, _ os.FileMode) error { | ||||
| // so that it is both volume path aware, and can create a directory with | ||||
| // a DACL. | ||||
| func mkdirall(path string, adminAndLocalSystem bool) error { | ||||
| 	if re := regexp.MustCompile(`^\\\\\?\\Volume{[a-z0-9-]+}$`); re.MatchString(path) { | ||||
| 	if volumePath.MatchString(path) { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sebastiaan van Stijn
					Sebastiaan van Stijn