All checks were successful
Test / Create distribution (push) Successful in 34s
Test / Sandbox (push) Successful in 1m47s
Test / Hakurei (push) Successful in 3m20s
Test / Hpkg (push) Successful in 3m49s
Test / Sandbox (race detector) (push) Successful in 5m48s
Test / Hakurei (race detector) (push) Successful in 3m9s
Test / Flake checks (push) Successful in 1m35s
This helps determine which libacl function the errno came from. Signed-off-by: Ophestra <cat@gensokyo.uk>
34 lines
619 B
Go
34 lines
619 B
Go
// Package acl implements simple ACL manipulation via libacl.
|
|
package acl
|
|
|
|
/*
|
|
#cgo linux pkg-config: --static libacl
|
|
|
|
#include "libacl-helper.h"
|
|
*/
|
|
import "C"
|
|
|
|
type Perm C.acl_perm_t
|
|
|
|
const (
|
|
Read Perm = C.ACL_READ
|
|
Write Perm = C.ACL_WRITE
|
|
Execute Perm = C.ACL_EXECUTE
|
|
)
|
|
|
|
// Update replaces ACL_USER entry with qualifier uid.
|
|
func Update(name string, uid int, perms ...Perm) error {
|
|
var p *Perm
|
|
if len(perms) > 0 {
|
|
p = &perms[0]
|
|
}
|
|
|
|
r, err := C.hakurei_acl_update_file_by_uid(
|
|
C.CString(name),
|
|
C.uid_t(uid),
|
|
(*C.acl_perm_t)(p),
|
|
C.size_t(len(perms)),
|
|
)
|
|
return newAclPathError(name, int(r), err)
|
|
}
|