1 {
2  * Copyright (c) 2004, 2010 Apple Inc. All rights reserved.
3  *
4  * @APPLE_LICENSE_HEADER_START@
5  *
6  * The contents of this file constitute Original Code as defined in and
7  * are subject to the Apple Public Source License Version 1.1 (the
8  * "License").  You may not use this file except in compliance with the
9  * License.  Please obtain a copy of the License at
10  * http://www.apple.com/publicsource and read it before using this file.
11  *
12  * This Original Code and all software distributed under the License are
13  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
17  * License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * @APPLE_LICENSE_HEADER_END@
21  }
22 {
23     Modified for use with Free Pascal
24     Version 308
25     Please report any bugs to <gpc@microbizz.nl>
26 }
27 
28 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
29 {$mode macpas}
30 {$modeswitch cblocks}
31 {$packenum 1}
32 {$macro on}
33 {$inline on}
34 {$calling mwpascal}
35 
36 unit acl;
37 interface
38 {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
39 {$setc GAP_INTERFACES_VERSION := $0308}
40 
41 {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
42     {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
43 {$endc}
44 
45 {$ifc defined CPUPOWERPC and defined CPUI386}
46 	{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
47 {$endc}
48 {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
49 	{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
50 {$endc}
51 
52 {$ifc not defined __ppc__ and defined CPUPOWERPC32}
53 	{$setc __ppc__ := 1}
54 {$elsec}
55 	{$setc __ppc__ := 0}
56 {$endc}
57 {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
58 	{$setc __ppc64__ := 1}
59 {$elsec}
60 	{$setc __ppc64__ := 0}
61 {$endc}
62 {$ifc not defined __i386__ and defined CPUI386}
63 	{$setc __i386__ := 1}
64 {$elsec}
65 	{$setc __i386__ := 0}
66 {$endc}
67 {$ifc not defined __x86_64__ and defined CPUX86_64}
68 	{$setc __x86_64__ := 1}
69 {$elsec}
70 	{$setc __x86_64__ := 0}
71 {$endc}
72 {$ifc not defined __arm__ and defined CPUARM}
73 	{$setc __arm__ := 1}
74 {$elsec}
75 	{$setc __arm__ := 0}
76 {$endc}
77 {$ifc not defined __arm64__ and defined CPUAARCH64}
78   {$setc __arm64__ := 1}
79 {$elsec}
80   {$setc __arm64__ := 0}
81 {$endc}
82 
83 {$ifc defined cpu64}
84   {$setc __LP64__ := 1}
85 {$elsec}
86   {$setc __LP64__ := 0}
87 {$endc}
88 
89 
90 {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
91 	{$error Conflicting definitions for __ppc__ and __i386__}
92 {$endc}
93 
94 {$ifc defined __ppc__ and __ppc__}
95 	{$setc TARGET_CPU_PPC := TRUE}
96 	{$setc TARGET_CPU_PPC64 := FALSE}
97 	{$setc TARGET_CPU_X86 := FALSE}
98 	{$setc TARGET_CPU_X86_64 := FALSE}
99 	{$setc TARGET_CPU_ARM := FALSE}
100 	{$setc TARGET_CPU_ARM64 := FALSE}
101 	{$setc TARGET_OS_MAC := TRUE}
102 	{$setc TARGET_OS_IPHONE := FALSE}
103 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
104 	{$setc TARGET_OS_EMBEDDED := FALSE}
105 {$elifc defined __ppc64__ and __ppc64__}
106 	{$setc TARGET_CPU_PPC := FALSE}
107 	{$setc TARGET_CPU_PPC64 := TRUE}
108 	{$setc TARGET_CPU_X86 := FALSE}
109 	{$setc TARGET_CPU_X86_64 := FALSE}
110 	{$setc TARGET_CPU_ARM := FALSE}
111 	{$setc TARGET_CPU_ARM64 := FALSE}
112 	{$setc TARGET_OS_MAC := TRUE}
113 	{$setc TARGET_OS_IPHONE := FALSE}
114 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
115 	{$setc TARGET_OS_EMBEDDED := FALSE}
116 {$elifc defined __i386__ and __i386__}
117 	{$setc TARGET_CPU_PPC := FALSE}
118 	{$setc TARGET_CPU_PPC64 := FALSE}
119 	{$setc TARGET_CPU_X86 := TRUE}
120 	{$setc TARGET_CPU_X86_64 := FALSE}
121 	{$setc TARGET_CPU_ARM := FALSE}
122 	{$setc TARGET_CPU_ARM64 := FALSE}
123 {$ifc defined iphonesim}
124  	{$setc TARGET_OS_MAC := FALSE}
125 	{$setc TARGET_OS_IPHONE := TRUE}
126 	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
127 {$elsec}
128 	{$setc TARGET_OS_MAC := TRUE}
129 	{$setc TARGET_OS_IPHONE := FALSE}
130 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
131 {$endc}
132 	{$setc TARGET_OS_EMBEDDED := FALSE}
133 {$elifc defined __x86_64__ and __x86_64__}
134 	{$setc TARGET_CPU_PPC := FALSE}
135 	{$setc TARGET_CPU_PPC64 := FALSE}
136 	{$setc TARGET_CPU_X86 := FALSE}
137 	{$setc TARGET_CPU_X86_64 := TRUE}
138 	{$setc TARGET_CPU_ARM := FALSE}
139 	{$setc TARGET_CPU_ARM64 := FALSE}
140 {$ifc defined iphonesim}
141  	{$setc TARGET_OS_MAC := FALSE}
142 	{$setc TARGET_OS_IPHONE := TRUE}
143 	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
144 {$elsec}
145 	{$setc TARGET_OS_MAC := TRUE}
146 	{$setc TARGET_OS_IPHONE := FALSE}
147 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
148 {$endc}
149 	{$setc TARGET_OS_EMBEDDED := FALSE}
150 {$elifc defined __arm__ and __arm__}
151 	{$setc TARGET_CPU_PPC := FALSE}
152 	{$setc TARGET_CPU_PPC64 := FALSE}
153 	{$setc TARGET_CPU_X86 := FALSE}
154 	{$setc TARGET_CPU_X86_64 := FALSE}
155 	{$setc TARGET_CPU_ARM := TRUE}
156 	{$setc TARGET_CPU_ARM64 := FALSE}
157 	{$setc TARGET_OS_MAC := FALSE}
158 	{$setc TARGET_OS_IPHONE := TRUE}
159 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
160 	{$setc TARGET_OS_EMBEDDED := TRUE}
161 {$elifc defined __arm64__ and __arm64__}
162 	{$setc TARGET_CPU_PPC := FALSE}
163 	{$setc TARGET_CPU_PPC64 := FALSE}
164 	{$setc TARGET_CPU_X86 := FALSE}
165 	{$setc TARGET_CPU_X86_64 := FALSE}
166 	{$setc TARGET_CPU_ARM := FALSE}
167 	{$setc TARGET_CPU_ARM64 := TRUE}
168 {$ifc defined ios}
169 	{$setc TARGET_OS_MAC := FALSE}
170 	{$setc TARGET_OS_IPHONE := TRUE}
171 	{$setc TARGET_OS_EMBEDDED := TRUE}
172 {$elsec}
173 	{$setc TARGET_OS_MAC := TRUE}
174 	{$setc TARGET_OS_IPHONE := FALSE}
175 	{$setc TARGET_OS_EMBEDDED := FALSE}
176 {$endc}
177 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
178 {$elsec}
179 	{$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
180 {$endc}
181 
182 {$ifc defined __LP64__ and __LP64__ }
183   {$setc TARGET_CPU_64 := TRUE}
184 {$elsec}
185   {$setc TARGET_CPU_64 := FALSE}
186 {$endc}
187 
188 {$ifc defined FPC_BIG_ENDIAN}
189 	{$setc TARGET_RT_BIG_ENDIAN := TRUE}
190 	{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
191 {$elifc defined FPC_LITTLE_ENDIAN}
192 	{$setc TARGET_RT_BIG_ENDIAN := FALSE}
193 	{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
194 {$elsec}
195 	{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
196 {$endc}
197 {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
198 {$setc CALL_NOT_IN_CARBON := FALSE}
199 {$setc OLDROUTINENAMES := FALSE}
200 {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
201 {$setc OPAQUE_UPP_TYPES := TRUE}
202 {$setc OTCARBONAPPLICATION := TRUE}
203 {$setc OTKERNEL := FALSE}
204 {$setc PM_USE_SESSION_APIS := TRUE}
205 {$setc TARGET_API_MAC_CARBON := TRUE}
206 {$setc TARGET_API_MAC_OS8 := FALSE}
207 {$setc TARGET_API_MAC_OSX := TRUE}
208 {$setc TARGET_CARBON := TRUE}
209 {$setc TARGET_CPU_68K := FALSE}
210 {$setc TARGET_CPU_MIPS := FALSE}
211 {$setc TARGET_CPU_SPARC := FALSE}
212 {$setc TARGET_OS_UNIX := FALSE}
213 {$setc TARGET_OS_WIN32 := FALSE}
214 {$setc TARGET_RT_MAC_68881 := FALSE}
215 {$setc TARGET_RT_MAC_CFM := FALSE}
216 {$setc TARGET_RT_MAC_MACHO := TRUE}
217 {$setc TYPED_FUNCTION_POINTERS := TRUE}
218 {$setc TYPE_BOOL := FALSE}
219 {$setc TYPE_EXTENDED := FALSE}
220 {$setc TYPE_LONGLONG := TRUE}
221 uses MacTypes,MacOSXPosix;
222 {$endc} {not MACOSALLINCLUDE}
223 
224 {$ALIGN POWER}
225 
226 
227 const __DARWIN_ACL_READ_DATA = 1 shl 1;
228 const __DARWIN_ACL_LIST_DIRECTORY = __DARWIN_ACL_READ_DATA;
229 const __DARWIN_ACL_WRITE_DATA = 1 shl 2;
230 const __DARWIN_ACL_ADD_FILE = __DARWIN_ACL_WRITE_DATA;
231 const __DARWIN_ACL_EXECUTE = 1 shl 3;
232 const __DARWIN_ACL_SEARCH = __DARWIN_ACL_EXECUTE;
233 const __DARWIN_ACL_DELETE = 1 shl 4;
234 const __DARWIN_ACL_APPEND_DATA = 1 shl 5;
235 const __DARWIN_ACL_ADD_SUBDIRECTORY = __DARWIN_ACL_APPEND_DATA;
236 const __DARWIN_ACL_DELETE_CHILD = 1 shl 6;
237 const __DARWIN_ACL_READ_ATTRIBUTES = 1 shl 7;
238 const __DARWIN_ACL_WRITE_ATTRIBUTES = 1 shl 8;
239 const __DARWIN_ACL_READ_EXTATTRIBUTES = 1 shl 9;
240 const __DARWIN_ACL_WRITE_EXTATTRIBUTES = 1 shl 10;
241 const __DARWIN_ACL_READ_SECURITY = 1 shl 11;
242 const __DARWIN_ACL_WRITE_SECURITY = 1 shl 12;
243 const __DARWIN_ACL_CHANGE_OWNER = 1 shl 13;
244 
245 const
246 	__DARWIN_ACL_EXTENDED_ALLOW = 1;
247 const
248 	__DARWIN_ACL_EXTENDED_DENY = 2;
249 
250 const __DARWIN_ACL_ENTRY_INHERITED = 1 shl 4;
251 const __DARWIN_ACL_ENTRY_FILE_INHERIT = 1 shl 5;
252 const __DARWIN_ACL_ENTRY_DIRECTORY_INHERIT = 1 shl 6;
253 const __DARWIN_ACL_ENTRY_LIMIT_INHERIT = 1 shl 7;
254 const __DARWIN_ACL_ENTRY_ONLY_INHERIT = 1 shl 8;
255 const __DARWIN_ACL_FLAG_NO_INHERIT = 1 shl 17;
256 
257 {
258  * Implementation constants.
259  *
260  * The ACL_TYPE_EXTENDED binary format permits 169 entries plus
261  * the ACL header in a page.  Give ourselves some room to grow;
262  * this limit is arbitrary.
263  }
264 const
265 	ACL_MAX_ENTRIES = 128;
266 
267 { 23.2.2 Individual object access permissions - nonstandard }
268 type
269   acl_perm_t = SInt32;
270 const
271 	ACL_READ_DATA		= __DARWIN_ACL_READ_DATA;
272 	ACL_LIST_DIRECTORY	= __DARWIN_ACL_LIST_DIRECTORY;
273 	ACL_WRITE_DATA		= __DARWIN_ACL_WRITE_DATA;
274 	ACL_ADD_FILE		= __DARWIN_ACL_ADD_FILE;
275 	ACL_EXECUTE		= __DARWIN_ACL_EXECUTE;
276 	ACL_SEARCH		= __DARWIN_ACL_SEARCH;
277 	ACL_DELETE		= __DARWIN_ACL_DELETE;
278 	ACL_APPEND_DATA		= __DARWIN_ACL_APPEND_DATA;
279 	ACL_ADD_SUBDIRECTORY	= __DARWIN_ACL_ADD_SUBDIRECTORY;
280 	ACL_DELETE_CHILD	= __DARWIN_ACL_DELETE_CHILD;
281 	ACL_READ_ATTRIBUTES	= __DARWIN_ACL_READ_ATTRIBUTES;
282 	ACL_WRITE_ATTRIBUTES	= __DARWIN_ACL_WRITE_ATTRIBUTES;
283 	ACL_READ_EXTATTRIBUTES	= __DARWIN_ACL_READ_EXTATTRIBUTES;
284 	ACL_WRITE_EXTATTRIBUTES	= __DARWIN_ACL_WRITE_EXTATTRIBUTES;
285 	ACL_READ_SECURITY	= __DARWIN_ACL_READ_SECURITY;
286 	ACL_WRITE_SECURITY	= __DARWIN_ACL_WRITE_SECURITY;
287 	ACL_CHANGE_OWNER	= __DARWIN_ACL_CHANGE_OWNER;
288 
289 
290 { 23.2.5 ACL entry tag type bits - nonstandard }
291 type
292   acl_tag_t = SInt32;
293 const
294 	ACL_UNDEFINED_TAG	= 0;
295 	ACL_EXTENDED_ALLOW	= __DARWIN_ACL_EXTENDED_ALLOW;
296 	ACL_EXTENDED_DENY	= __DARWIN_ACL_EXTENDED_DENY;
297 
298 { 23.2.6 Individual ACL types }
299 type
300   acl_type_t = SInt32;
301 const
302 	ACL_TYPE_EXTENDED	= $00000100;
303 { Posix 1003.1e types - not supported }
304 	ACL_TYPE_ACCESS         = $00000000;
305 	ACL_TYPE_DEFAULT        = $00000001;
306 { The following types are defined on FreeBSD/Linux - not supported }
307 	ACL_TYPE_AFS            = $00000002;
308 	ACL_TYPE_CODA           = $00000003;
309 	ACL_TYPE_NTFS           = $00000004;
310 	ACL_TYPE_NWFS           = $00000005;
311 
312 { 23.2.7 ACL qualifier constants }
313 
314 const ACL_UNDEFINED_ID = nil;	{ XXX ? }
315 
316 { 23.2.8 ACL Entry Constants }
317 type
318   acl_entry_id_t = SInt32;
319 const
320 	ACL_FIRST_ENTRY		= 0;
321 	ACL_NEXT_ENTRY		= -1;
322 	ACL_LAST_ENTRY		= -2;
323 
324 { nonstandard ACL / entry flags }
325 type
326   acl_flag_t = SInt32;
327 const
328 	ACL_FLAG_DEFER_INHERIT		= (1  shl  0);	{ tentative }
329 	ACL_FLAG_NO_INHERIT		= __DARWIN_ACL_FLAG_NO_INHERIT;
330 	ACL_ENTRY_INHERITED		= __DARWIN_ACL_ENTRY_INHERITED;
331 	ACL_ENTRY_FILE_INHERIT		= __DARWIN_ACL_ENTRY_FILE_INHERIT;
332 	ACL_ENTRY_DIRECTORY_INHERIT	= __DARWIN_ACL_ENTRY_DIRECTORY_INHERIT;
333 	ACL_ENTRY_LIMIT_INHERIT		= __DARWIN_ACL_ENTRY_LIMIT_INHERIT;
334 	ACL_ENTRY_ONLY_INHERIT		= __DARWIN_ACL_ENTRY_ONLY_INHERIT;
335 
336 { "External" ACL types }
337 type
338 	acl_t = ^_acl; { an opaque type }
339 	_acl = record end;
340 	acl_entry_t = ^_acl_entry; { an opaque type }
341 	_acl_entry = record end;
342 	acl_permset_t = ^_acl_permset; { an opaque type }
343 	_acl_permset = record end;
344 	acl_flagset_t = ^_acl_flagset; { an opaque type }
345 	_acl_flagset = record end;
346 
347 type
348 	acl_permset_mask_t = UInt64;
349 
350 { 23.1.6.1 ACL Storage Management }
acl_dupnull351 function acl_dup( acl: acl_t ): acl_t; external name '_acl_dup';
acl_freenull352 function acl_free( obj_p: UnivPtr ): SInt32; external name '_acl_free';
acl_initnull353 function acl_init( count: SInt32 ): acl_t; external name '_acl_init';
354 
355 { 23.1.6.2 (1) ACL Entry manipulation }
acl_copy_entrynull356 function acl_copy_entry( dest_d: acl_entry_t; src_d: acl_entry_t ): SInt32; external name '_acl_copy_entry';
acl_create_entrynull357 function acl_create_entry( var acl_p: acl_t; var entry_p: acl_entry_t ): SInt32; external name '_acl_create_entry';
acl_create_entry_npnull358 function acl_create_entry_np( var acl_p: acl_t; var entry_p: acl_entry_t; entry_index: SInt32 ): SInt32; external name '_acl_create_entry_np';
acl_delete_entrynull359 function acl_delete_entry( acl: acl_t; entry_d: acl_entry_t ): SInt32; external name '_acl_delete_entry';
acl_get_entrynull360 function acl_get_entry( acl: acl_t; entry_id: SInt32; var entry_p: acl_entry_t ): SInt32; external name '_acl_get_entry';
acl_validnull361 function acl_valid( acl: acl_t ): SInt32; external name '_acl_valid';
acl_valid_fd_npnull362 function acl_valid_fd_np( fd: SInt32; typ: acl_type_t; acl: acl_t ): SInt32; external name '_acl_valid_fd_np';
acl_valid_file_npnull363 function acl_valid_file_np( path: ConstCStringPtr; typ: acl_type_t; acl: acl_t ): SInt32; external name '_acl_valid_file_np';
acl_valid_link_npnull364 function acl_valid_link_np( path: ConstCStringPtr; typ: acl_type_t; acl: acl_t ): SInt32; external name '_acl_valid_link_np';
365 
366 { 23.1.6.2 (2) Manipulate permissions within an ACL entry }
acl_add_permnull367 function acl_add_perm( permset_d: acl_permset_t; perm: acl_perm_t ): SInt32; external name '_acl_add_perm';
acl_calc_masknull368 function acl_calc_mask( var acl_p: acl_t ): SInt32; external name '_acl_calc_mask';	{ not supported }
acl_clear_permsnull369 function acl_clear_perms( permset_d: acl_permset_t ): SInt32; external name '_acl_clear_perms';
acl_delete_permnull370 function acl_delete_perm( permset_d: acl_permset_t; perm: acl_perm_t ): SInt32; external name '_acl_delete_perm';
acl_get_perm_npnull371 function acl_get_perm_np( permset_d: acl_permset_t; perm: acl_perm_t ): SInt32; external name '_acl_get_perm_np';
acl_get_permsetnull372 function acl_get_permset( entry_d: acl_entry_t; var permset_p: acl_permset_t ): SInt32; external name '_acl_get_permset';
acl_set_permsetnull373 function acl_set_permset( entry_d: acl_entry_t; permset_d: acl_permset_t ): SInt32; external name '_acl_set_permset';
374 
375 { nonstandard - manipulate permissions within an ACL entry using bitmasks }
acl_maximal_permset_mask_npnull376 function acl_maximal_permset_mask_np( var mask_p: acl_permset_mask_t ): SInt32; external name '_acl_maximal_permset_mask_np';
377 (* __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3) *)
acl_get_permset_mask_npnull378 function acl_get_permset_mask_np( entry_d: acl_entry_t; var mask_p: acl_permset_mask_t ): SInt32; external name '_acl_get_permset_mask_np';
379 (* __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3) *)
acl_set_permset_mask_npnull380 function acl_set_permset_mask_np( entry_d: acl_entry_t; mask: acl_permset_mask_t ): SInt32; external name '_acl_set_permset_mask_np';
381 (* __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3) *)
382 
383 { nonstandard - manipulate flags on ACLs and entries }
acl_add_flag_npnull384 function acl_add_flag_np( flagset_d: acl_flagset_t; flag: acl_flag_t ): SInt32; external name '_acl_add_flag_np';
acl_clear_flags_npnull385 function acl_clear_flags_np( flagset_d: acl_flagset_t ): SInt32; external name '_acl_clear_flags_np';
acl_delete_flag_npnull386 function acl_delete_flag_np( flagset_d: acl_flagset_t; flag: acl_flag_t ): SInt32; external name '_acl_delete_flag_np';
acl_get_flag_npnull387 function acl_get_flag_np( flagset_d: acl_flagset_t; flag: acl_flag_t ): SInt32; external name '_acl_get_flag_np';
acl_get_flagset_npnull388 function acl_get_flagset_np( obj_p: UnivPtr; var flagset_p: acl_flagset_t ): SInt32; external name '_acl_get_flagset_np';
acl_set_flagset_npnull389 function acl_set_flagset_np( obj_p: UnivPtr; flagset_d: acl_flagset_t ): SInt32; external name '_acl_set_flagset_np';
390 
391 { 23.1.6.2 (3) Manipulate ACL entry tag type and qualifier }
acl_get_qualifiernull392 function acl_get_qualifier( entry_d: acl_entry_t ): UnivPtr; external name '_acl_get_qualifier';
acl_get_tag_typenull393 function acl_get_tag_type( entry_d: acl_entry_t; var tag_type_p: acl_tag_t ): SInt32; external name '_acl_get_tag_type';
acl_set_qualifiernull394 function acl_set_qualifier( entry_d: acl_entry_t; tag_qualifier_p: {const} UnivPtr ): SInt32; external name '_acl_set_qualifier';
acl_set_tag_typenull395 function acl_set_tag_type( entry_d: acl_entry_t; tag_type: acl_tag_t ): SInt32; external name '_acl_set_tag_type';
396 
397 { 23.1.6.3 ACL manipulation on an Object }
acl_delete_def_filenull398 function acl_delete_def_file( path_p: ConstCStringPtr ): SInt32; external name '_acl_delete_def_file'; { not supported }
acl_get_fdnull399 function acl_get_fd( fd: SInt32 ): acl_t; external name '_acl_get_fd';
acl_get_fd_npnull400 function acl_get_fd_np( fd: SInt32; typ: acl_type_t ): acl_t; external name '_acl_get_fd_np';
acl_get_filenull401 function acl_get_file( path_p: ConstCStringPtr; typ: acl_type_t ): acl_t; external name '_acl_get_file';
acl_get_link_npnull402 function acl_get_link_np( path_p: ConstCStringPtr; typ: acl_type_t ): acl_t; external name '_acl_get_link_np';
acl_set_fdnull403 function acl_set_fd( fd: SInt32; acl: acl_t ): SInt32; external name '_acl_set_fd';
acl_set_fd_npnull404 function acl_set_fd_np( fd: SInt32; acl: acl_t; acl_type: acl_type_t ): SInt32; external name '_acl_set_fd_np';
acl_set_filenull405 function acl_set_file( path_p: ConstCStringPtr; typ: acl_type_t; acl: acl_t ): SInt32; external name '_acl_set_file';
acl_set_link_npnull406 function acl_set_link_np( path_p: ConstCStringPtr; typ: acl_type_t; acl: acl_t ): SInt32; external name '_acl_set_link_np';
407 
408 { 23.1.6.4 ACL Format translation }
acl_copy_extnull409 function acl_copy_ext( buf_p: UnivPtr; acl: acl_t; size: ssize_t ): ssize_t; external name '_acl_copy_ext';
acl_copy_ext_nativenull410 function acl_copy_ext_native( buf_p: UnivPtr; acl: acl_t; size: ssize_t ): ssize_t; external name '_acl_copy_ext_native';
acl_copy_intnull411 function acl_copy_int( buf_p: {const} UnivPtr ): acl_t; external name '_acl_copy_int';
acl_copy_int_nativenull412 function acl_copy_int_native( buf_p: {const} UnivPtr ): acl_t; external name '_acl_copy_int_native';
acl_from_textnull413 function acl_from_text( buf_p: ConstCStringPtr ): acl_t; external name '_acl_from_text';
acl_sizenull414 function acl_size( acl: acl_t ): ssize_t; external name '_acl_size';
acl_to_textnull415 function acl_to_text( acl: acl_t; var len_p: ssize_t ): CStringPtr; external name '_acl_to_text';
416 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
417 
418 end.
419 {$endc} {not MACOSALLINCLUDE}
420