diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-30 13:19:15 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-30 13:19:15 +0900 |
| commit | 0122593312679f193e8c2574abf9ae879173d185 (patch) | |
| tree | 4d698d133e17f3db5d6f1fd9cc32f9d83172a2a0 /system/acl/libacl-helper.go | |
| parent | 6aa431d57a2c224c7974bf12d93b46475efecf6e (diff) | |
system/acl: wrap libacl errors in PathError
This helps determine which libacl function the errno came from.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'system/acl/libacl-helper.go')
| -rw-r--r-- | system/acl/libacl-helper.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/system/acl/libacl-helper.go b/system/acl/libacl-helper.go new file mode 100644 index 00000000..22575296 --- /dev/null +++ b/system/acl/libacl-helper.go @@ -0,0 +1,40 @@ +package acl + +import "os" + +func newAclPathError(name string, r int, err error) error { + pathError := &os.PathError{Path: name, Err: err} + switch r { + case 0: + return nil + + case -1: + pathError.Op = "acl_get_file" + case -2: + pathError.Op = "acl_get_tag_type" + case -3: + pathError.Op = "acl_get_qualifier" + case -4: + pathError.Op = "acl_delete_entry" + case -5: + pathError.Op = "acl_create_entry" + case -6: + pathError.Op = "acl_get_permset" + case -7: + pathError.Op = "acl_add_perm" + case -8: + pathError.Op = "acl_set_tag_type" + case -9: + pathError.Op = "acl_set_qualifier" + case -10: + pathError.Op = "acl_calc_mask" + case -11: + pathError.Op = "acl_valid" + case -12: + pathError.Op = "acl_set_file" + + default: // unreachable + pathError.Op = "setfacl" + } + return pathError +} |
