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