-
Notifications
You must be signed in to change notification settings - Fork 13
/
CFURLPriv.h
634 lines (504 loc) · 34.3 KB
/
CFURLPriv.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
/*
* Copyright (c) 2014 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/* CFURLPriv.h
Copyright (c) 2008-2013, Apple Inc. All rights reserved.
*/
#if !defined(__COREFOUNDATION_CFURLPRIV__)
#define __COREFOUNDATION_CFURLPRIV__ 1
#include <CoreFoundation/CFBase.h>
#include <CoreFoundation/CFError.h>
#include <CoreFoundation/CFArray.h>
#include <CoreFoundation/CFDictionary.h>
#include <CoreFoundation/CFString.h>
#include <CoreFoundation/CFURL.h>
#if TARGET_OS_MAC
#include <sys/param.h>
#include <sys/mount.h>
#include <CoreFoundation/CFFileSecurity.h>
#include <CoreFoundation/CFURLEnumerator.h>
#include <CoreFoundation/CFDate.h>
#endif
CF_EXTERN_C_BEGIN
#if TARGET_OS_MAC
enum {
// Resource I/O related errors, with kCFErrorURLKey containing URL
kCFURLNoSuchResourceError = 4, // Attempt to do a file system operation on a non-existent file
kCFURLResourceLockingError = 255, // Couldn't get a lock on file
kCFURLReadUnknownError = 256, // Read error (reason unknown)
kCFURLReadNoPermissionError = 257, // Read error (permission problem)
kCFURLReadInvalidResourceNameError = 258, // Read error (invalid file name)
kCFURLReadCorruptResourceError = 259, // Read error (file corrupt, bad format, etc)
kCFURLReadNoSuchResourceError = 260, // Read error (no such file)
kCFURLReadInapplicableStringEncodingError = 261, // Read error (string encoding not applicable) also kCFStringEncodingErrorKey
kCFURLReadUnsupportedSchemeError = 262, // Read error (unsupported URL scheme)
kCFURLReadTooLargeError = 263, // Read error (file too large)
kCFURLReadUnknownStringEncodingError = 264, // Read error (string encoding of file contents could not be determined)
kCFURLWriteUnknownError = 512, // Write error (reason unknown)
kCFURLWriteNoPermissionError = 513, // Write error (permission problem)
kCFURLWriteInvalidResourceNameError = 514, // Write error (invalid file name)
kCFURLWriteInapplicableStringEncodingError = 517, // Write error (string encoding not applicable) also kCFStringEncodingErrorKey
kCFURLWriteUnsupportedSchemeError = 518, // Write error (unsupported URL scheme)
kCFURLWriteOutOfSpaceError = 640, // Write error (out of storage space)
kCFURLWriteVolumeReadOnlyError = 642, // Write error (readonly volume)
} CF_ENUM_AVAILABLE(10_5, 2_0);
/*
Private File System Property Keys
*/
CF_EXPORT const CFStringRef _kCFURLPathKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLPathKey or NSURLPathKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeIDKey CF_AVAILABLE(10_6, 4_0);
/* Volume ID (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLInodeNumberKey CF_AVAILABLE(10_6, 4_0);
/* 64-bit inode number (the inode number from the file system) (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLFileIDKey CF_AVAILABLE(10_6, 4_0);
/* 64-bit file ID (for tracking a file by ID. This may or may not be the inode number) (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLParentDirectoryIDKey CF_AVAILABLE(10_6, 4_0);
/* 64-bit file ID (for tracking a parent directory by ID. This may or may not be the inode number) (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLDistinctLocalizedNameKey CF_AVAILABLE(10_6, 4_0);
/* The localized name, if it is distinct from the real name. Otherwise, NULL (CFString) */
CF_EXPORT const CFStringRef _kCFURLNameExtensionKey CF_AVAILABLE(10_6, 4_0);
/* The name extension (CFString) */
CF_EXPORT const CFStringRef _kCFURLFinderInfoKey CF_AVAILABLE(10_6, 4_0);
/* A 16-byte Finder Info structure immediately followed by a 16-byte Extended Finder Info structure (CFData) */
CF_EXPORT const CFStringRef _kCFURLIsCompressedKey CF_AVAILABLE(10_6, 4_0);
/* True if resource's data is transparently compressed by the system on its storage device (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLIsApplicationKey CF_AVAILABLE(10_6, 4_0);
/* True if resource is an application (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLCanSetHiddenExtensionKey CF_AVAILABLE(10_6, 4_0);
/* True if the filename extension can be hidden or unhidden (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLIsReadableKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLIsReadableKey or NSURLIsReadableKey public property keys */
/* never implemented and scheduled for removal in 10.10/8.0 */CF_EXPORT const CFStringRef _kCFURLUserCanReadKey CF_DEPRECATED(10_0, 10_6, 2_0, 4_0);
CF_EXPORT const CFStringRef _kCFURLIsWriteableKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLIsWritableKey or NSURLIsWritableKey public property keys */
/* never implemented and scheduled for removal in 10.10/8.0 */CF_EXPORT const CFStringRef _kCFURLUserCanWriteKey CF_DEPRECATED(10_0, 10_6, 2_0, 4_0);
CF_EXPORT const CFStringRef _kCFURLIsExecutableKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLIsExecutableKey or NSURLIsExecutableKey public property keys */
/* never implemented and scheduled for removal in 10.10/8.0 */CF_EXPORT const CFStringRef _kCFURLUserCanExecuteKey CF_DEPRECATED(10_0, 10_6, 2_0, 4_0);
CF_EXPORT const CFStringRef _kCFURLParentDirectoryIsVolumeRootKey CF_AVAILABLE(10_6, 4_0);
/* True if the parent directory is the root of a volume (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLFileSecurityKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys */
CF_EXPORT const CFStringRef _kCFURLFileSizeOfResourceForkKey CF_AVAILABLE(10_6, 4_0);
/* Size in bytes of the resource fork (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLFileAllocatedSizeOfResourceForkKey CF_AVAILABLE(10_6, 4_0);
/* Size in bytes of the blocks allocated for the resource fork (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLEffectiveIconImageDataKey CF_AVAILABLE(10_6, 4_0);
/* Icon image data, i.e. raw pixel data (CFData) */
CF_EXPORT const CFStringRef _kCFURLCustomIconImageDataKey CF_AVAILABLE(10_6, 4_0);
/* Icon image data of the item's custom icon, if any (CFData) */
CF_EXPORT const CFStringRef _kCFURLEffectiveIconFlattenedReferenceDataKey CF_AVAILABLE(10_6, 4_0);
/* Icon flattened reference, suitable for cheaply sharing the effective icon reference across processess (CFData) */
CF_EXPORT const CFStringRef _kCFURLBundleIdentifierKey CF_AVAILABLE(10_6, 4_0);
/* If resource is a bundle, the bundle identifier (CFString) */
CF_EXPORT const CFStringRef _kCFURLVersionKey CF_AVAILABLE(10_6, 4_0);
/* If resource is a bundle, the bundle version (CFBundleVersion) as a string (CFString) */
CF_EXPORT const CFStringRef _kCFURLShortVersionStringKey CF_AVAILABLE(10_6, 4_0);
/* If resource is a bundle, the bundle short version (CFBundleShortVersionString) as a string (CFString) */
CF_EXPORT const CFStringRef _kCFURLOwnerIDKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal later in 10.9/7.0 since it is unused - Use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys and CFFileSecurityGetOwner() */
CF_EXPORT const CFStringRef _kCFURLGroupIDKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal later in 10.9/7.0 since it is unused - Use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys and CFFileSecurityGetGroup() */
CF_EXPORT const CFStringRef _kCFURLStatModeKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal later in 10.9/7.0 since it is unused - Use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys and CFFileSecurityGetMode() */
CF_EXPORT const CFStringRef _kCFURLLocalizedNameDictionaryKey CF_AVAILABLE(10_7, NA);
/* For items with localized display names, the dictionary of all available localizations. The keys are the cannonical locale strings for the available localizations. (CFDictionary) */
CF_EXPORT const CFStringRef _kCFURLLocalizedTypeDescriptionDictionaryKey CF_AVAILABLE(10_7, NA);
/* The dictionary of all available localizations of the item kind string. The keys are the cannonical locale strings for the available localizations. (CFDictionary) */
CF_EXPORT const CFStringRef _kCFURLApplicationCategoriesKey CF_AVAILABLE(10_7, NA);
/* The array of category UTI strings associated with the url. (CFArray) */
CF_EXPORT const CFStringRef _kCFURLApplicationHighResolutionModeIsMagnifiedKey CF_AVAILABLE(10_7, NA);
/* True if the app runs with magnified 1x graphics on a 2x display (Per-user, CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLCanSetApplicationHighResolutionModeIsMagnifiedKey CF_AVAILABLE(10_7, NA);
/* True if the app can run in either magnified or native resolution modes (Read only, CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLWriterBundleIdentifierKey CF_AVAILABLE(10_8, NA);
/* The bundle identifier of the process writing to this object (Read-write, value type CFString) */
CF_EXPORT const CFStringRef _kCFURLApplicationNapIsDisabledKey CF_AVAILABLE(10_9, NA);
/* True if app nap is disabled (Applications only, Per-user, CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLCanSetApplicationNapIsDisabledKey CF_AVAILABLE(10_9, NA);
/* True if the ApplicationNapIsDisabled property value can be changed (Applications only, Read only, CFBoolean) */
/* Additional volume properties */
CF_EXPORT const CFStringRef _kCFURLVolumeRefNumKey CF_AVAILABLE(10_6, 4_0);
/* The Carbon File Manager's FSVolumeRefNum for the resource volume (CFNumber) */
CF_EXPORT const CFStringRef _kCFURLVolumeUUIDStringKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeUUIDStringKey or NSURLVolumeUUIDStringKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeCreationDateKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeCreationDateKey or NSURLVolumeCreationDateKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeIsLocalKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsLocalKey or NSURLVolumeIsLocalKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeIsAutomountKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsAutomountedKey or NSURLVolumeIsAutomountedKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeDontBrowseKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsBrowsableKey or NSURLVolumeIsBrowsableKey public property keys (Note: value is inverse of _kCFURLVolumeDontBrowseKey) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsReadOnlyKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsReadOnlyKey or NSURLVolumeIsReadOnlyKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeIsQuarantinedKey CF_AVAILABLE(10_6, 4_0);
/* Mounted quarantined (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsEjectableKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsEjectableKey or NSURLVolumeIsEjectableKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeIsRemovableKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsRemovableKey or NSURLVolumeIsRemovableKey public property keys */
CF_EXPORT const CFStringRef _kCFURLVolumeIsInternalKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsInternalKey or NSURLVolumeIsInternalKey public property keys (Note: this has slightly different behavior than the public VolumeIsInternal key) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsExternalKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsInternalKey or NSURLVolumeIsInternalKey public property keys (Note: this has slightly different behavior than the public VolumeIsInternal key) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsDiskImageKey CF_AVAILABLE(10_6, 4_0);
/* Volume is a mounted disk image (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLDiskImageBackingURLKey CF_AVAILABLE(10_6, 4_0);
/* If volume is a mounted disk image, the URL of the backing disk image (CFURL) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsFileVaultKey CF_AVAILABLE(10_6, 4_0);
/* Volume uses File Vault encryption (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsiDiskKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks */
CF_EXPORT const CFStringRef _kCFURLVolumeiDiskUserNameKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks */
CF_EXPORT const CFStringRef _kCFURLVolumeIsLocaliDiskMirrorKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks */
CF_EXPORT const CFStringRef _kCFURLVolumeIsiPodKey CF_AVAILABLE(10_6, 4_0);
/* Volume is on an iPod (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsCDKey CF_AVAILABLE(10_6, 4_0);
/* Volume is a CD (audio or CD-ROM). (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsDVDKey CF_AVAILABLE(10_6, 4_0);
/* Volume is a DVD (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsDeviceFileSystemKey CF_AVAILABLE(10_7, 5_0);
/* Volume is devfs (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIsHFSStandardKey CF_AVAILABLE(10_6, 4_0);
/* Volume is HFS standard (which includes AFP volumes). Directory IDs, but not file IDs, can be looked up. (CFBoolean) */
CF_EXPORT const CFStringRef _kCFURLVolumeIOMediaIconFamilyNameKey CF_AVAILABLE(10_9, NA);
/* Volume's IOMediaIconFamilyName. (CFStringRef) */
CF_EXPORT const CFStringRef _kCFURLVolumeIOMediaIconBundleIdentifierKey CF_AVAILABLE(10_9, NA);
/* Volume's IOMediaIconBundleIdentifier. (CFStringRef) */
CF_EXPORT const CFStringRef _kCFURLResolvedFromBookmarkDataKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal later in 10.9/7.0 since it is unused (*/
CF_EXPORT const CFStringRef _kCFURLVolumeMountPointStringKey CF_AVAILABLE(10_6, 4_0);
/* the volume mountpoint string (Read-only, value type CFString) */
CF_EXPORT const CFStringRef _kCFURLCompleteMountURLKey CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeURLForRemountingKey or NSURLVolumeURLForRemountingKey public property keys */
CF_EXPORT const CFStringRef _kCFURLUbiquitousItemDownloadRequestedKey CF_AVAILABLE(10_9, 7_0);
/* Is this Ubiquity item scheduled for download? (this is also true for items that are already downloaded). Use startDownloadingUbiquitousItemAtURL:error: to make this true (Read-only, value type CFBoolean) */
/*
Some common boolean properties can be accessed as a bitfield
for better performance -- see _CFURLGetResourcePropertyFlags() and
_CFURLCopyResourcePropertyValuesAndFlags(), below.
*/
enum {
kCFURLResourceIsRegularFile = 0x00000001,
kCFURLResourceIsDirectory = 0x00000002,
kCFURLResourceIsSymbolicLink = 0x00000004,
kCFURLResourceIsVolume = 0x00000008,
kCFURLResourceIsPackage = 0x00000010,
kCFURLResourceIsSystemImmutable = 0x00000020,
kCFURLResourceIsUserImmutable = 0x00000040,
kCFURLResourceIsHidden = 0x00000080,
kCFURLResourceHasHiddenExtension = 0x00000100,
kCFURLResourceIsApplication = 0x00000200,
kCFURLResourceIsCompressed = 0x00000400,
kCFURLResourceIsSystemCompressed CF_ENUM_DEPRECATED(10_6, 10_9, 4_0, 7_0)
= 0x00000400, /* Deprecated and scheduled for removal in 10.10/8.0 - Use kCFURLResourceIsCompressed */
kCFURLCanSetHiddenExtension = 0x00000800,
kCFURLResourceIsReadable = 0x00001000,
kCFURLResourceIsWriteable = 0x00002000,
kCFURLResourceIsExecutable = 0x00004000, /* execute files or search directories */
kCFURLIsAliasFile = 0x00008000,
kCFURLIsMountTrigger = 0x00010000,
};
typedef unsigned long long CFURLResourcePropertyFlags;
/*
_CFURLGetResourceFlags - Returns a bit array of resource flags in the "flags"
output parameter. Only flags whose corresponding bits are set in the "mask" parameter
are valid in the output bit array. Returns true on success, false if an error occurs.
Optional output error: the error is set to a valid CFErrorRef if and only if the function
returns false. A valid output error must be released by the caller.
*/
CF_EXPORT
Boolean _CFURLGetResourcePropertyFlags(CFURLRef url, CFURLResourcePropertyFlags mask, CFURLResourcePropertyFlags *flags, CFErrorRef *error) CF_AVAILABLE(10_6, 4_0);
/*
File resource properties which can be obtained with _CFURLCopyFilePropertyValuesAndFlags().
*/
typedef CF_OPTIONS(unsigned long long, CFURLFilePropertyBitmap) {
kCFURLName = 0x0000000000000001,
kCFURLLinkCount = 0x0000000000000002,
kCFURLVolumeIdentifier = 0x0000000000000004,
kCFURLObjectIdentifier = 0x0000000000000008,
kCFURLCreationDate = 0x0000000000000010,
kCFURLContentModificationDate = 0x0000000000000020,
kCFURLAttributeModificationDate = 0x0000000000000040,
kCFURLFileSize = 0x0000000000000080,
kCFURLFileAllocatedSize = 0x0000000000000100,
kCFURLFileSizeOfResourceFork = 0x0000000000000200,
kCFURLFileAllocatedSizeOfResourceFork = 0x0000000000000400,
kCFURLFinderInfo = 0x0000000000000800,
kCFURLFileSecurity = 0x0000000000001000,
};
/*
The structure where _CFURLCopyFilePropertyValuesAndFlags() returns file resource properties.
*/
struct _CFURLFilePropertyValues {
CFStringRef name; /* you are responsible for releasing this if you ask for it and get it */
uint32_t linkCount;
uint64_t volumeIdentifier;
uint64_t objectIdentifier;
CFAbsoluteTime creationDate;
CFAbsoluteTime contentModificationDate;
CFAbsoluteTime attributeModificationDate;
uint64_t fileSize;
uint64_t fileAllocatedSize;
uint64_t fileSizeOfResourceFork;
uint64_t fileAllocatedSizeOfResourceFork;
uint8_t finderInfo[32];
CFFileSecurityRef fileSecurity; /* you are responsible for releasing this if you ask for it and get it */
};
typedef struct _CFURLFilePropertyValues _CFURLFilePropertyValues;
/*
_CFURLCopyResourcePropertyValuesAndFlags - Returns property values as simple types
whenever possible. Returns a bit array of resource flags in the "flags"
output parameter. Only flags whose corresponding bits are set in the "mask" parameter
are valid in the output bit array. Returns true on success, false if an error occurs.
Optional output error: the error is set to a valid CFErrorRef if and only if the function
returns false. A valid output error must be released by the caller.
*/
CF_EXPORT
Boolean _CFURLCopyResourcePropertyValuesAndFlags( CFURLRef url, CFURLFilePropertyBitmap requestProperties, CFURLFilePropertyBitmap *actualProperties, struct _CFURLFilePropertyValues *properties, CFURLResourcePropertyFlags propertyFlagsMask, CFURLResourcePropertyFlags *propertyFlags, CFErrorRef *error) CF_AVAILABLE(10_7, 4_0);
/*
Volume property flags
*/
typedef CF_OPTIONS(unsigned long long, CFURLVolumePropertyFlags) {
kCFURLVolumeIsLocal = 0x1LL, // Local device (vs. network device)
kCFURLVolumeIsAutomount = 0x2LL, // Mounted by the automounter
kCFURLVolumeDontBrowse = 0x4LL, // Hidden from user browsing
kCFURLVolumeIsReadOnly = 0x8LL, // Mounted read-only
kCFURLVolumeIsQuarantined = 0x10LL, // Mounted with quarantine bit
kCFURLVolumeIsEjectable = 0x20LL,
kCFURLVolumeIsRemovable = 0x40LL,
kCFURLVolumeIsInternal = 0x80LL,
kCFURLVolumeIsExternal = 0x100LL,
kCFURLVolumeIsDiskImage = 0x200LL,
kCFURLVolumeIsFileVault = 0x400LL,
kCFURLVolumeIsLocaliDiskMirror CF_ENUM_DEPRECATED(10_6, 10_9, 4_0, 7_0)
= 0x800LL, // Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks
kCFURLVolumeIsiPod = 0x1000LL,
kCFURLVolumeIsiDisk CF_ENUM_DEPRECATED(10_6, 10_9, 4_0, 7_0)
= 0x2000LL, // Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks
kCFURLVolumeIsCD = 0x4000LL,
kCFURLVolumeIsDVD = 0x8000LL,
kCFURLVolumeIsDeviceFileSystem = 0x10000LL,
kCFURLVolumeIsTimeMachine CF_ENUM_AVAILABLE_MAC(10_9)
= 0x20000LL,
kCFURLVolumeIsAirport CF_ENUM_AVAILABLE_MAC(10_9)
= 0x40000LL,
kCFURLVolumeIsVideoDisk CF_ENUM_AVAILABLE_MAC(10_9)
= 0x80000LL,
kCFURLVolumeIsDVDVideo CF_ENUM_AVAILABLE_MAC(10_9)
= 0x100000LL,
kCFURLVolumeIsBDVideo CF_ENUM_AVAILABLE_MAC(10_9)
= 0x200000LL,
kCFURLVolumeIsMobileTimeMachine CF_ENUM_AVAILABLE_MAC(10_9)
= 0x400000LL,
kCFURLVolumeIsNetworkOptical CF_ENUM_AVAILABLE_MAC(10_9)
= 0x800000LL,
kCFURLVolumeIsBeingRepaired CF_ENUM_AVAILABLE_MAC(10_9)
= 0x1000000LL,
kCFURLVolumeIsBeingUnmounted CF_ENUM_AVAILABLE_MAC(10_9)
= 0x2000000LL,
// IMPORTANT: The values of the following flags must stay in sync with the
// VolumeCapabilities flags in CarbonCore (FileIDTreeStorage.h)
kCFURLVolumeSupportsPersistentIDs = 0x100000000LL,
kCFURLVolumeSupportsSearchFS = 0x200000000LL,
kCFURLVolumeSupportsExchange = 0x400000000LL,
// reserved 0x800000000LL,
kCFURLVolumeSupportsSymbolicLinks = 0x1000000000LL,
kCFURLVolumeSupportsDenyModes = 0x2000000000LL,
kCFURLVolumeSupportsCopyFile = 0x4000000000LL,
kCFURLVolumeSupportsReadDirAttr = 0x8000000000LL,
kCFURLVolumeSupportsJournaling = 0x10000000000LL,
kCFURLVolumeSupportsRename = 0x20000000000LL,
kCFURLVolumeSupportsFastStatFS = 0x40000000000LL,
kCFURLVolumeSupportsCaseSensitiveNames = 0x80000000000LL,
kCFURLVolumeSupportsCasePreservedNames = 0x100000000000LL,
kCFURLVolumeSupportsFLock = 0x200000000000LL,
kCFURLVolumeHasNoRootDirectoryTimes = 0x400000000000LL,
kCFURLVolumeSupportsExtendedSecurity = 0x800000000000LL,
kCFURLVolumeSupports2TBFileSize = 0x1000000000000LL,
kCFURLVolumeSupportsHardLinks = 0x2000000000000LL,
kCFURLVolumeSupportsMandatoryByteRangeLocks = 0x4000000000000LL,
kCFURLVolumeSupportsPathFromID = 0x8000000000000LL,
// reserved 0x10000000000000LL,
kCFURLVolumeIsJournaling = 0x20000000000000LL,
kCFURLVolumeSupportsSparseFiles = 0x40000000000000LL,
kCFURLVolumeSupportsZeroRuns = 0x80000000000000LL,
kCFURLVolumeSupportsVolumeSizes = 0x100000000000000LL,
kCFURLVolumeSupportsRemoteEvents = 0x200000000000000LL,
kCFURLVolumeSupportsHiddenFiles = 0x400000000000000LL,
kCFURLVolumeSupportsDecmpFSCompression = 0x800000000000000LL,
kCFURLVolumeHas64BitObjectIDs = 0x1000000000000000LL,
kCFURLVolumePropertyFlagsAll = 0xffffffffffffffffLL
};
/*
_CFURLGetVolumePropertyFlags - Returns a bit array of volume properties.
Only flags whose corresponding bits are set in the "mask" parameter are valid
in the output bit array. Returns true on success, false if an error occurs.
Optional output error: the error is set to a valid CFErrorRef if and only if the function
returns false. A valid output error must be released by the caller.
*/
CF_EXPORT
Boolean _CFURLGetVolumePropertyFlags(CFURLRef url, CFURLVolumePropertyFlags mask, CFURLVolumePropertyFlags *flags, CFErrorRef *error) CF_AVAILABLE(10_6, 4_0);
/* _CFURLCopyResourcePropertyForKeyFromCache works like CFURLCopyResourcePropertyForKey
only it never causes I/O. If the property value requested is cached (or known
to be not available) for the resource, return TRUE and the property value. The
property value returned could be NULL meaning that property is not available
for the resource. If the property value requested is not cached or the resource,
FALSE is returned.
Only for use by DesktopServices!
*/
CF_EXPORT
Boolean _CFURLCopyResourcePropertyForKeyFromCache(CFURLRef url, CFStringRef key, void *cfTypeRefValue) CF_AVAILABLE(10_8, NA);
/* _CFURLCopyResourcePropertiesForKeysFromCache works like CFURLCopyResourcePropertiesForKeys
only it never causes I/O. If the property values requested are cached (or known
to be not available) for the resource, return a CFDictionary. Property values
not available for the resource are not included in the CFDictionary.
If the values requested are not cached, return NULL.
Only for use by DesktopServices!
*/
CF_EXPORT
CFDictionaryRef _CFURLCopyResourcePropertiesForKeysFromCache(CFURLRef url, CFArrayRef keys) CF_AVAILABLE(10_8, NA);
/* _CFURLCacheResourcePropertyForKey works like CFURLCopyResourcePropertyForKey
only it does not return the property value -- it just ensures the value is cached.
If no errors occur, TRUE is returned. If an error occurs, FALSE is returned
and the optional output error is set to a valid CFErrorRef (which must be
released by the caller.
Only for use by DesktopServices!
*/
CF_EXPORT
Boolean _CFURLCacheResourcePropertyForKey(CFURLRef url, CFStringRef key, CFErrorRef *error) CF_AVAILABLE(10_8, NA);
/* _CFURLCacheResourcePropertiesForKeys works like CFURLCopyResourcePropertiesForKeys
only it does not return the property values -- it just ensures the values is cached.
If no errors occur, TRUE is returned. If an error occurs, FALSE is returned
and the optional output error is set to a valid CFErrorRef (which must be
released by the caller.
Only for use by DesktopServices!
*/
CF_EXPORT
Boolean _CFURLCacheResourcePropertiesForKeys(CFURLRef url, CFArrayRef keys, CFErrorRef *error) CF_AVAILABLE(10_8, NA);
/*
_CFURLSetResourcePropertyForKeyAndUpdateFileCache - Works mostly like CFURLSetResourcePropertyForKey
except that file system properties are updated in the URL's file cache (if it has a valid cache)
and dependant properties are not flushed. This means that values in the cache may not match what
is on the file system (see <rdar://problem/8371295> for details).
Only for use by DesktopServices!
*/
CF_EXPORT
Boolean _CFURLSetResourcePropertyForKeyAndUpdateFileCache(CFURLRef url, CFStringRef key, CFTypeRef propertyValue, CFErrorRef *error) CF_AVAILABLE(10_7, NA);
/*
_CFURLCreateDisplayPathComponentsArray()
Summary:
_FileURLCreateDisplayPathComponentsArray creates a CFArray of
CFURLs for each component in the path leading up to the target
URL. This routine is suitable for clients who wish to show the
path leading up to a file system item. NOTE: This routine can be
I/O intensive, so use it sparingly, and cache the results if
possible.
Discussion:
The CFURLs in the result CFArray are ordered from the target URL
to the root of the display path. For example, if the target URL
is file://localhost/System/Library/ the CFURLs in the array will
be ordered: file://localhost/System/Library/,
file://localhost/System/, and then file://localhost/
Parameters:
targetURL:
The target URL.
error:
A pointer to a CFErrorRef, or NULL. If error is non-NULL and
the function result is NULL, this will be filled in with a
CFErrorRef representing the error that occurred.
Result:
A CFArray or NULL if an error occurred.
*/
CF_EXPORT
CFArrayRef _CFURLCreateDisplayPathComponentsArray(CFURLRef url, CFErrorRef *error) CF_AVAILABLE(10_7, 4_0);
/* Returns true for URLs that locate file system resources. */
CF_EXPORT
Boolean _CFURLIsFileURL(CFURLRef url) CF_AVAILABLE(10_6, 4_0);
/* Deprecated and scheduled for removal in 10.10/8.0 - Use the public API CFURLIsFileReferenceURL() */
CF_EXPORT
Boolean _CFURLIsFileReferenceURL(CFURLRef url) CF_DEPRECATED(10_6, 10_9, 4_0, 7_0);
/* For use by Core Services */
CF_EXPORT
void *__CFURLResourceInfoPtr(CFURLRef url) CF_AVAILABLE(10_6, 4_0);
CF_EXPORT
void __CFURLSetResourceInfoPtr(CFURLRef url, void *ptr) CF_AVAILABLE(10_6, 4_0);
struct FSCatalogInfo;
struct HFSUniStr255;
/* _CFURLGetCatalogInfo is used by LaunchServices */
CF_EXPORT
SInt32 _CFURLGetCatalogInfo(CFURLRef url, UInt32 whichInfo, struct FSCatalogInfo *catalogInfo, struct HFSUniStr255 *name) CF_AVAILABLE(10_7, 5_0);
/* _CFURLReplaceObject SPI */
/* options for _CFURLReplaceObject */
enum {
// _CFURLItemReplacementUsingOriginalMetadataOnly = 1, // not used
_CFURLItemReplacementUsingNewMetadataOnly = 2,
// _CFURLItemReplacementByMergingMetadata = 3, // not used
_CFURLItemReplacementWithoutDeletingBackupItem = 1 << 4
};
CF_EXPORT
Boolean _CFURLReplaceObject( CFAllocatorRef allocator, CFURLRef originalItemURL, CFURLRef newItemURL, CFStringRef newName, CFStringRef backupItemName, CFOptionFlags options, CFURLRef *resultingURL, CFErrorRef *error ) CF_AVAILABLE(10_7, 5_0);
#if (TARGET_OS_MAC) || CF_BUILDING_CF || NSBUILDINGFOUNDATION
CF_EXPORT
CFURLEnumeratorResult _CFURLEnumeratorGetURLsBulk(CFURLEnumeratorRef enumerator, CFIndex maximumURLs, CFIndex *actualURLs, CFURLRef *urls, CFErrorRef *error) CF_AVAILABLE(10_6, 4_0);
#endif
#if TARGET_OS_MAC
enum {
kCFBookmarkFileCreationWithoutOverwritingExistingFile = ( 1UL << 8 ), // if destination file already exists don't overwrite it and return an error
kCFBookmarkFileCreationWithoutAppendingAliasExtension = ( 1UL << 9 ), // don't add / change whatever extension is on the created alias file
kCFBookmarkFileCreationWithoutCreatingResourceFork = ( 1UL << 10 ), // don't create the resource-fork half of the alias file
kCFURLBookmarkCreationAllowCreationIfResourceDoesNotExistMask = ( 1 << 28 ), // allow creation of a bookmark to a file: scheme with a CFURLRef of item which may not exist. If the filesystem item does not exist, the created bookmark contains essentially no properties beyond the url string.
kCFURLBookmarkCreationDoNotIncludeSandboxExtensionsMask = ( 1 << 29 ), // If set, sandbox extensions are not included in created bookmarks. Ordinarily, bookmarks ( except those created suitable for putting into a bookmark file ) will have a sandbox extension added for the item
};
enum {
kCFBookmarkResolutionPerformRelativeResolutionFirstMask CF_ENUM_AVAILABLE(10_8,6_0) = ( 1 << 11 ), // perform relative resolution before absolute resolution. If this bit is set, for this to be useful a relative URL must also have been passed in and the bookmark when created must have been created relative to another url.
};
typedef CF_ENUM(CFIndex, CFURLBookmarkMatchResult) {
kCFURLBookmarkComparisonUnableToCompare = 0x00000000, /* the two bookmarks could not be compared for some reason */
kCFURLBookmarkComparisonNoMatch = 0x00001000, /* Bookmarks do not refer to the same item */
kCFURLBookmarkComparisonUnlikelyToMatch = 0x00002000, /* it is unlikely that the two items refer to the same filesystem item */
kCFURLBookmarkComparisonLikelyToMatch = 0x00004000, /* it is likely that the two items refer to the same filesystem item ( but, they may not ) */
kCFURLBookmarkComparisonMatch = 0x00008000, /* the two items refer to the same item, but other information in the bookmarks may not match */
kCFURLBookmarkComparisonExactMatch = 0x0000f000 /* the two bookmarks are identical */
};
/* The relativeToURL and matchingPropertyKeys parameters are not used and are ignored */
CF_EXPORT
CFURLBookmarkMatchResult _CFURLBookmarkDataCompare(CFDataRef bookmark1Ref, CFDataRef bookmark2Ref, CFURLRef relativeToURL, CFArrayRef* matchingPropertyKeys) CF_AVAILABLE(10_7, NA);
CF_EXPORT
OSStatus _CFURLBookmarkDataToAliasHandle(CFDataRef bookmarkRef, void* aliasHandleP) CF_AVAILABLE(10_7, NA);
#endif
/*
The following are properties that can be asked of bookmark data objects in addition to the resource properties
from CFURL itself.
*/
extern const CFStringRef kCFURLBookmarkOriginalPathKey CF_AVAILABLE(10_7, 5_0);
extern const CFStringRef kCFURLBookmarkOriginalRelativePathKey CF_AVAILABLE(10_7, 5_0);
extern const CFStringRef kCFURLBookmarkOriginalRelativePathComponentsArrayKey CF_AVAILABLE(10_7, 5_0);
extern const CFStringRef kCFURLBookmarkOriginalVolumeNameKey CF_AVAILABLE(10_7, 5_0);
extern const CFStringRef kCFURLBookmarkOriginalVolumeCreationDateKey CF_AVAILABLE(10_7, 5_0);
#endif /* TARGET_OS_MAC */
CF_EXTERN_C_END
#endif /* ! __COREFOUNDATION_CFURLPRIV__ */