1/*
2 * Copyright (c) 2008 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23#ifndef __IOKIT_IOCFURLACCESS_H
24#define __IOKIT_IOCFURLACCESS_H
25
26#include <CoreFoundation/CoreFoundation.h>
27
28CFTypeRef IOURLCreatePropertyFromResource(CFAllocatorRef alloc, CFURLRef url, CFStringRef property, SInt32 *errorCode);
29
30Boolean IOURLCreateDataAndPropertiesFromResource(CFAllocatorRef alloc, CFURLRef url, CFDataRef *resourceData, CFDictionaryRef *properties, CFArrayRef desiredProperties, SInt32 *errorCode);
31
32Boolean IOURLWriteDataAndPropertiesToResource(CFURLRef url, CFDataRef dataToWrite, CFDictionaryRef propertiesToWrite, int32_t *errorCode);
33
34#ifdef HAVE_CFURLACCESS
35
36#define kIOURLFileExists		kCFURLFileExists
37#define kIOURLFileDirectoryContents	kCFURLFileDirectoryContents
38#define kIOURLFileLength		kCFURLFileLength
39#define kIOURLFileLastModificationTime	kCFURLFileLastModificationTime
40#define kIOURLFilePOSIXMode		kCFURLFilePOSIXMode
41#define kIOURLFileOwnerID		kCFURLFileOwnerID
42
43/* Common error codes; this list is expected to grow */
44
45typedef CFURLError IOURLError;
46
47enum {
48    kIOURLUnknownError 			= kCFURLUnknownError,
49    kIOURLUnknownSchemeError 		= kCFURLUnknownSchemeError,
50    kIOURLResourceNotFoundError 	= kCFURLResourceNotFoundError,
51    kIOURLResourceAccessViolationError 	= kCFURLResourceAccessViolationError,
52    kIOURLRemoteHostUnavailableError 	= kCFURLRemoteHostUnavailableError,
53    kIOURLImproperArgumentsError 	= kCFURLImproperArgumentsError,
54    kIOURLUnknownPropertyKeyError 	= kCFURLUnknownPropertyKeyError,
55    kIOURLPropertyKeyUnavailableError 	= kCFURLPropertyKeyUnavailableError,
56    kIOURLTimeoutError 			= kCFURLTimeoutError
57};
58
59#else /* !HAVE_CFURLACCESS */
60
61#define kIOURLFileExists		CFSTR("kIOURLFileExists")
62#define kIOURLFileDirectoryContents	CFSTR("kIOURLFileDirectoryContents")
63#define kIOURLFileLength		CFSTR("kIOURLFileLength")
64#define kIOURLFileLastModificationTime	CFSTR("kIOURLFileLastModificationTime")
65#define kIOURLFilePOSIXMode		CFSTR("kIOURLFilePOSIXMode")
66#define kIOURLFileOwnerID		CFSTR("kIOURLFileOwnerID")
67
68/* Common error codes; this list is expected to grow */
69
70typedef enum {
71      kIOURLUnknownError = -10,
72          kIOURLUnknownSchemeError = -11,
73          kIOURLResourceNotFoundError = -12,
74          kIOURLResourceAccessViolationError = -13,
75          kIOURLRemoteHostUnavailableError = -14,
76          kIOURLImproperArgumentsError = -15,
77          kIOURLUnknownPropertyKeyError = -16,
78          kIOURLPropertyKeyUnavailableError = -17,
79          kIOURLTimeoutError = -18
80} IOURLError;
81
82#endif /* !HAVE_CFURLACCESS */
83
84#endif /* __IOKIT_IOCFURLACCESS_H */
85