Deleted Added
full compact
acl_perm.c (75185) acl_perm.c (75928)
1/*
2 * Copyright (c) 2001 Chris D. Faulhaber
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 * POSSIBILITY OF SUCH DAMAGE.
25 *
1/*
2 * Copyright (c) 2001 Chris D. Faulhaber
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 * POSSIBILITY OF SUCH DAMAGE.
25 *
26 * $FreeBSD: head/lib/libc/posix1e/acl_perm.c 75185 2001-04-04 18:00:52Z tmm $
26 * $FreeBSD: head/lib/libc/posix1e/acl_perm.c 75928 2001-04-24 22:45:41Z jedgar $
27 */
28
29#include <sys/types.h>
30#include "namespace.h"
31#include <sys/acl.h>
32#include "un-namespace.h"
33
34#include <errno.h>
35#include <string.h>
36
37/*
27 */
28
29#include <sys/types.h>
30#include "namespace.h"
31#include <sys/acl.h>
32#include "un-namespace.h"
33
34#include <errno.h>
35#include <string.h>
36
37/*
38 * acl_add_perm() adds the permission contained in perm to the
38 * acl_add_perm() (23.4.1): add the permission contained in perm to the
39 * permission set permset_d
40 */
41int
42acl_add_perm(acl_permset_t permset_d, acl_perm_t perm)
43{
44
39 * permission set permset_d
40 */
41int
42acl_add_perm(acl_permset_t permset_d, acl_perm_t perm)
43{
44
45 if (!permset_d || (perm & !(ACL_PERM_BITS))) {
46 errno = EINVAL;
47 return -1;
45 if (permset_d) {
46 switch(perm) {
47 case ACL_READ:
48 case ACL_WRITE:
49 case ACL_EXECUTE:
50 *permset_d |= perm;
51 return 0;
52 }
48 }
49
53 }
54
50 *permset_d |= perm;
51
52 return 0;
55 errno = EINVAL;
56 return -1;
53}
54
55/*
57}
58
59/*
56 * acl_clear_perms() clears all permisions from the permission
60 * acl_clear_perms() (23.4.3): clear all permisions from the permission
57 * set permset_d
58 */
59int
60acl_clear_perms(acl_permset_t permset_d)
61{
62
63 if (!permset_d) {
64 errno = EINVAL;
65 return -1;
66 }
67
61 * set permset_d
62 */
63int
64acl_clear_perms(acl_permset_t permset_d)
65{
66
67 if (!permset_d) {
68 errno = EINVAL;
69 return -1;
70 }
71
68 *permset_d = 0;
72 *permset_d = ACL_PERM_NONE;
69
70 return 0;
71}
72
73/*
73
74 return 0;
75}
76
77/*
74 * acl_delete_perm() removes the permission in perm from the
78 * acl_delete_perm() (23.4.10): remove the permission in perm from the
75 * permission set permset_d
76 */
77int
78acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm)
79{
80
79 * permission set permset_d
80 */
81int
82acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm)
83{
84
81 if (!permset_d) {
82 errno = EINVAL;
83 return -1;
85 if (permset_d) {
86 switch(perm) {
87 case ACL_READ:
88 case ACL_WRITE:
89 case ACL_EXECUTE:
90 *permset_d &= ~(perm & ACL_PERM_BITS);
91 return 0;
92 }
84 }
85
93 }
94
86 *permset_d &= ~(perm & ACL_PERM_BITS);
87
88 return 0;
95 errno = EINVAL;
96 return -1;
89}
97}