]>
Commit | Line | Data |
---|---|---|
9ce05555 | 1 | /* |
bd5b749c | 2 | * Copyright (c) 2008 Apple Inc. All rights reserved. |
9ce05555 A |
3 | * |
4 | * @APPLE_LICENSE_HEADER_START@ | |
5 | * | |
9ce05555 A |
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 | /* CFBundle_Internal.h | |
bd5b749c | 24 | Copyright (c) 1999-2007, Apple Inc. All rights reserved. |
9ce05555 A |
25 | */ |
26 | ||
27 | #if !defined(__COREFOUNDATION_CFBUNDLE_INTERNAL__) | |
28 | #define __COREFOUNDATION_CFBUNDLE_INTERNAL__ 1 | |
29 | ||
30 | #include <CoreFoundation/CFDate.h> | |
31 | #include <CoreFoundation/CFBundle.h> | |
32 | #include <CoreFoundation/CFPlugIn.h> | |
bd5b749c | 33 | #include <CoreFoundation/CFError.h> |
9ce05555 A |
34 | #include "CFInternal.h" |
35 | #include "CFPlugIn_Factory.h" | |
36 | #include "CFBundle_BinaryTypes.h" | |
37 | ||
bd5b749c | 38 | CF_EXTERN_C_BEGIN |
9ce05555 | 39 | |
bd5b749c A |
40 | #define __kCFLogBundle 3 |
41 | #define __kCFLogPlugIn 3 | |
9ce05555 | 42 | |
bd5b749c A |
43 | #if DEPLOYMENT_TARGET_MACOSX || 0 |
44 | #define PLATFORM_PATH_STYLE kCFURLPOSIXPathStyle | |
45 | #elif 0 || 0 | |
9ce05555 | 46 | #define PLATFORM_PATH_STYLE kCFURLWindowsPathStyle |
9ce05555 | 47 | #else |
bd5b749c | 48 | #error Unknown or unspecified DEPLOYMENT_TARGET |
9ce05555 A |
49 | #endif |
50 | ||
bd5b749c A |
51 | #define CFBundleExecutableNotFoundError 4 |
52 | #define CFBundleExecutableNotLoadableError 3584 | |
53 | #define CFBundleExecutableArchitectureMismatchError 3585 | |
54 | #define CFBundleExecutableRuntimeMismatchError 3586 | |
55 | #define CFBundleExecutableLoadError 3587 | |
56 | #define CFBundleExecutableLinkError 3588 | |
57 | ||
9ce05555 A |
58 | typedef struct __CFResourceData { |
59 | CFMutableDictionaryRef _stringTableCache; | |
60 | Boolean _executableLacksResourceFork; | |
bd5b749c A |
61 | Boolean _infoDictionaryFromResourceFork; |
62 | char _padding[2]; | |
9ce05555 A |
63 | } _CFResourceData; |
64 | ||
65 | extern _CFResourceData *__CFBundleGetResourceData(CFBundleRef bundle); | |
66 | ||
67 | typedef struct __CFPlugInData { | |
68 | Boolean _isPlugIn; | |
69 | Boolean _loadOnDemand; | |
70 | Boolean _isDoingDynamicRegistration; | |
71 | Boolean _unused1; | |
72 | UInt32 _instanceCount; | |
73 | CFMutableArrayRef _factories; | |
74 | } _CFPlugInData; | |
75 | ||
76 | extern _CFPlugInData *__CFBundleGetPlugInData(CFBundleRef bundle); | |
77 | ||
78 | /* Private CFBundle API */ | |
79 | ||
80 | extern Boolean _CFIsResourceAtURL(CFURLRef url, Boolean *isDir); | |
81 | extern Boolean _CFIsResourceAtPath(CFStringRef path, Boolean *isDir); | |
82 | ||
83 | extern Boolean _CFBundleURLLooksLikeBundleVersion(CFURLRef url, UInt8 *version); | |
84 | extern CFDictionaryRef _CFBundleCopyInfoDictionaryInDirectory(CFAllocatorRef alloc, CFURLRef url, UInt8 *version); | |
85 | extern CFDictionaryRef _CFBundleCopyInfoDictionaryInDirectoryWithVersion(CFAllocatorRef alloc, CFURLRef url, UInt8 version); | |
86 | extern CFURLRef _CFBundleCopySupportFilesDirectoryURLInDirectory(CFAllocatorRef alloc, CFURLRef bundleURL, UInt8 version); | |
87 | extern CFURLRef _CFBundleCopyResourcesDirectoryURLInDirectory(CFAllocatorRef alloc, CFURLRef bundleURL, UInt8 version); | |
88 | ||
89 | extern Boolean _CFBundleCouldBeBundle(CFURLRef url); | |
90 | extern CFURLRef _CFBundleCopyFrameworkURLForExecutablePath(CFAllocatorRef alloc, CFStringRef executablePath); | |
91 | extern CFURLRef _CFBundleCopyResourceForkURLMayBeLocal(CFBundleRef bundle, Boolean mayBeLocal); | |
92 | extern CFDictionaryRef _CFBundleCopyInfoDictionaryInResourceForkWithAllocator(CFAllocatorRef alloc, CFURLRef url); | |
93 | extern CFStringRef _CFBundleCopyBundleDevelopmentRegionFromVersResource(CFBundleRef bundle); | |
94 | extern CFDictionaryRef _CFBundleCopyInfoDictionaryInExecutable(CFURLRef url); | |
bd5b749c | 95 | extern CFArrayRef _CFBundleCopyArchitecturesForExecutable(CFURLRef url); |
9ce05555 A |
96 | |
97 | extern void _CFBundleAddPreferredLprojNamesInDirectory(CFAllocatorRef alloc, CFURLRef bundleURL, UInt8 version, CFDictionaryRef infoDict, CFMutableArrayRef lprojNames, CFStringRef devLang); | |
98 | ||
99 | extern CFStringRef _CFBundleGetPlatformExecutablesSubdirectoryName(void); | |
100 | extern CFStringRef _CFBundleGetAlternatePlatformExecutablesSubdirectoryName(void); | |
101 | extern CFStringRef _CFBundleGetOtherPlatformExecutablesSubdirectoryName(void); | |
102 | extern CFStringRef _CFBundleGetOtherAlternatePlatformExecutablesSubdirectoryName(void); | |
103 | ||
104 | extern CFStringRef _CFCreateStringFromVersionNumber(CFAllocatorRef alloc, UInt32 vers); | |
105 | extern UInt32 _CFVersionNumberFromString(CFStringRef versStr); | |
106 | ||
107 | extern void _CFBundleScheduleForUnloading(CFBundleRef bundle); | |
108 | extern void _CFBundleUnscheduleForUnloading(CFBundleRef bundle); | |
109 | extern void _CFBundleUnloadScheduledBundles(void); | |
110 | ||
111 | ||
112 | #if defined(BINARY_SUPPORT_DYLD) | |
113 | // DYLD API | |
114 | extern __CFPBinaryType _CFBundleGrokBinaryType(CFURLRef executableURL); | |
115 | extern Boolean _CFBundleDYLDCheckLoaded(CFBundleRef bundle); | |
bd5b749c A |
116 | extern Boolean _CFBundleDYLDLoadBundle(CFBundleRef bundle, Boolean forceGlobal, CFErrorRef *error); |
117 | extern Boolean _CFBundleDYLDLoadFramework(CFBundleRef bundle, CFErrorRef *error); | |
9ce05555 A |
118 | extern void _CFBundleDYLDUnloadBundle(CFBundleRef bundle); |
119 | extern void *_CFBundleDYLDGetSymbolByName(CFBundleRef bundle, CFStringRef symbolName); | |
120 | ||
121 | extern CFArrayRef _CFBundleDYLDCopyLoadedImagePathsIfChanged(void); | |
122 | extern CFArrayRef _CFBundleDYLDCopyLoadedImagePathsForHint(CFStringRef hint); | |
bd5b749c A |
123 | #endif /* BINARY_SUPPORT_DYLD */ |
124 | ||
125 | #if defined(BINARY_SUPPORT_DLFCN) | |
126 | // dlfcn API | |
127 | extern Boolean _CFBundleDlfcnCheckLoaded(CFBundleRef bundle); | |
128 | extern Boolean _CFBundleDlfcnPreflight(CFBundleRef bundle, CFErrorRef *error); | |
129 | extern Boolean _CFBundleDlfcnLoadBundle(CFBundleRef bundle, Boolean forceGlobal, CFErrorRef *error); | |
130 | extern Boolean _CFBundleDlfcnLoadFramework(CFBundleRef bundle, CFErrorRef *error); | |
131 | extern void _CFBundleDlfcnUnload(CFBundleRef bundle); | |
132 | extern void *_CFBundleDlfcnGetSymbolByName(CFBundleRef bundle, CFStringRef symbolName); | |
133 | #endif /* BINARY_SUPPORT_DLFCN */ | |
9ce05555 | 134 | |
9ce05555 A |
135 | |
136 | #if defined(BINARY_SUPPORT_DLL) | |
bd5b749c | 137 | extern Boolean _CFBundleDLLLoad(CFBundleRef bundle, CFErrorRef *error); |
9ce05555 A |
138 | extern void _CFBundleDLLUnload(CFBundleRef bundle); |
139 | extern void *_CFBundleDLLGetSymbolByName(CFBundleRef bundle, CFStringRef symbolName); | |
bd5b749c | 140 | #endif /* BINARY_SUPPORT_DLL */ |
9ce05555 A |
141 | |
142 | ||
143 | /* Private PlugIn-related CFBundle API */ | |
144 | ||
d8925383 | 145 | extern Boolean _CFBundleNeedsInitPlugIn(CFBundleRef bundle); |
9ce05555 | 146 | extern void _CFBundleInitPlugIn(CFBundleRef bundle); |
0ae65c4b | 147 | extern void _CFBundlePlugInLoaded(CFBundleRef bundle); |
9ce05555 A |
148 | extern void _CFBundleDeallocatePlugIn(CFBundleRef bundle); |
149 | ||
150 | extern void _CFPlugInWillUnload(CFPlugInRef plugIn); | |
151 | ||
152 | extern void _CFPlugInAddPlugInInstance(CFPlugInRef plugIn); | |
153 | extern void _CFPlugInRemovePlugInInstance(CFPlugInRef plugIn); | |
154 | ||
155 | extern void _CFPlugInAddFactory(CFPlugInRef plugIn, _CFPFactory *factory); | |
156 | extern void _CFPlugInRemoveFactory(CFPlugInRef plugIn, _CFPFactory *factory); | |
157 | ||
158 | ||
159 | /* Strings for parsing bundle structure */ | |
160 | #define _CFBundleSupportFilesDirectoryName1 CFSTR("Support Files") | |
161 | #define _CFBundleSupportFilesDirectoryName2 CFSTR("Contents") | |
162 | #define _CFBundleResourcesDirectoryName CFSTR("Resources") | |
163 | #define _CFBundleExecutablesDirectoryName CFSTR("Executables") | |
164 | #define _CFBundleNonLocalizedResourcesDirectoryName CFSTR("Non-localized Resources") | |
165 | ||
166 | #define _CFBundleSupportFilesURLFromBase1 CFSTR("Support%20Files/") | |
167 | #define _CFBundleSupportFilesURLFromBase2 CFSTR("Contents/") | |
168 | #define _CFBundleResourcesURLFromBase0 CFSTR("Resources/") | |
169 | #define _CFBundleResourcesURLFromBase1 CFSTR("Support%20Files/Resources/") | |
170 | #define _CFBundleResourcesURLFromBase2 CFSTR("Contents/Resources/") | |
171 | #define _CFBundleExecutablesURLFromBase1 CFSTR("Support%20Files/Executables/") | |
172 | #define _CFBundleExecutablesURLFromBase2 CFSTR("Contents/") | |
173 | #define _CFBundleInfoURLFromBase0 CFSTR("Resources/Info.plist") | |
174 | #define _CFBundleInfoURLFromBase1 CFSTR("Support%20Files/Info.plist") | |
175 | #define _CFBundleInfoURLFromBase2 CFSTR("Contents/Info.plist") | |
176 | #define _CFBundleInfoURLFromBase3 CFSTR("Info.plist") | |
177 | #define _CFBundleInfoFileName CFSTR("Info.plist") | |
178 | #define _CFBundleInfoURLFromBaseNoExtension0 CFSTR("Resources/Info") | |
179 | #define _CFBundleInfoURLFromBaseNoExtension1 CFSTR("Support%20Files/Info") | |
180 | #define _CFBundleInfoURLFromBaseNoExtension2 CFSTR("Contents/Info") | |
181 | #define _CFBundleInfoURLFromBaseNoExtension3 CFSTR("Info") | |
182 | #define _CFBundleInfoExtension CFSTR("plist") | |
183 | #define _CFBundleLocalInfoName CFSTR("InfoPlist") | |
184 | #define _CFBundlePkgInfoURLFromBase1 CFSTR("Support%20Files/PkgInfo") | |
185 | #define _CFBundlePkgInfoURLFromBase2 CFSTR("Contents/PkgInfo") | |
186 | #define _CFBundlePseudoPkgInfoURLFromBase CFSTR("PkgInfo") | |
187 | #define _CFBundlePrivateFrameworksURLFromBase0 CFSTR("Frameworks/") | |
188 | #define _CFBundlePrivateFrameworksURLFromBase1 CFSTR("Support%20Files/Frameworks/") | |
189 | #define _CFBundlePrivateFrameworksURLFromBase2 CFSTR("Contents/Frameworks/") | |
190 | #define _CFBundleSharedFrameworksURLFromBase0 CFSTR("SharedFrameworks/") | |
191 | #define _CFBundleSharedFrameworksURLFromBase1 CFSTR("Support%20Files/SharedFrameworks/") | |
192 | #define _CFBundleSharedFrameworksURLFromBase2 CFSTR("Contents/SharedFrameworks/") | |
193 | #define _CFBundleSharedSupportURLFromBase0 CFSTR("SharedSupport/") | |
194 | #define _CFBundleSharedSupportURLFromBase1 CFSTR("Support%20Files/SharedSupport/") | |
195 | #define _CFBundleSharedSupportURLFromBase2 CFSTR("Contents/SharedSupport/") | |
196 | #define _CFBundleBuiltInPlugInsURLFromBase0 CFSTR("PlugIns/") | |
197 | #define _CFBundleBuiltInPlugInsURLFromBase1 CFSTR("Support%20Files/PlugIns/") | |
198 | #define _CFBundleBuiltInPlugInsURLFromBase2 CFSTR("Contents/PlugIns/") | |
199 | #define _CFBundleAlternateBuiltInPlugInsURLFromBase0 CFSTR("Plug-ins/") | |
200 | #define _CFBundleAlternateBuiltInPlugInsURLFromBase1 CFSTR("Support%20Files/Plug-ins/") | |
201 | #define _CFBundleAlternateBuiltInPlugInsURLFromBase2 CFSTR("Contents/Plug-ins/") | |
202 | ||
203 | #define _CFBundleLprojExtension CFSTR("lproj") | |
d8925383 | 204 | #define _CFBundleLprojExtensionWithDot CFSTR(".lproj") |
9ce05555 A |
205 | |
206 | #define _CFBundleMacOSXPlatformName CFSTR("macos") | |
207 | #define _CFBundleAlternateMacOSXPlatformName CFSTR("macosx") | |
208 | #define _CFBundleMacOS8PlatformName CFSTR("macosclassic") | |
209 | #define _CFBundleAlternateMacOS8PlatformName CFSTR("macos8") | |
210 | #define _CFBundleWindowsPlatformName CFSTR("windows") | |
211 | #define _CFBundleHPUXPlatformName CFSTR("hpux") | |
212 | #define _CFBundleSolarisPlatformName CFSTR("solaris") | |
213 | #define _CFBundleLinuxPlatformName CFSTR("linux") | |
214 | #define _CFBundleFreeBSDPlatformName CFSTR("freebsd") | |
215 | ||
216 | #define _CFBundleDefaultStringTableName CFSTR("Localizable") | |
217 | #define _CFBundleStringTableType CFSTR("strings") | |
218 | ||
219 | #define _CFBundleUserLanguagesPreferenceName CFSTR("AppleLanguages") | |
220 | #define _CFBundleOldUserLanguagesPreferenceName CFSTR("NSLanguages") | |
221 | ||
222 | #define _CFBundleLocalizedResourceForkFileName CFSTR("Localized") | |
223 | ||
bd5b749c A |
224 | #if 0 || 0 |
225 | #define _CFBundleWindowsResourceDirectoryExtension CFSTR("resources") | |
226 | #endif | |
227 | ||
9ce05555 A |
228 | /* Old platform names (no longer used) */ |
229 | #define _CFBundleMacOSXPlatformName_OLD CFSTR("macintosh") | |
230 | #define _CFBundleAlternateMacOSXPlatformName_OLD CFSTR("nextstep") | |
231 | #define _CFBundleWindowsPlatformName_OLD CFSTR("windows") | |
232 | #define _CFBundleAlternateWindowsPlatformName_OLD CFSTR("winnt") | |
233 | ||
234 | #define _CFBundleMacOSXInfoPlistPlatformName_OLD CFSTR("macos") | |
235 | #define _CFBundleWindowsInfoPlistPlatformName_OLD CFSTR("win32") | |
236 | ||
bd5b749c | 237 | CF_EXTERN_C_END |
9ce05555 A |
238 | |
239 | #endif /* ! __COREFOUNDATION_CFBUNDLE_INTERNAL__ */ | |
240 |