2 * Copyright (c) 2008 Apple Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
24 Copyright (c) 1999-2007, Apple Inc. All rights reserved.
27 #if !defined(__COREFOUNDATION_CFBUNDLEPRIV__)
28 #define __COREFOUNDATION_CFBUNDLEPRIV__ 1
30 #include <CoreFoundation/CFBase.h>
31 #include <CoreFoundation/CFArray.h>
32 #include <CoreFoundation/CFBundle.h>
33 #include <CoreFoundation/CFDictionary.h>
34 #include <CoreFoundation/CFString.h>
35 #include <CoreFoundation/CFURL.h>
41 const CFStringRef _kCFBundlePackageTypeKey
;
43 const CFStringRef _kCFBundleSignatureKey
;
45 const CFStringRef _kCFBundleIconFileKey
;
47 const CFStringRef _kCFBundleDocumentTypesKey
;
49 const CFStringRef _kCFBundleURLTypesKey
;
51 /* Localizable Finder stuff */
53 const CFStringRef _kCFBundleDisplayNameKey
;
55 const CFStringRef _kCFBundleShortVersionStringKey
;
57 const CFStringRef _kCFBundleGetInfoStringKey
;
59 const CFStringRef _kCFBundleGetInfoHTMLKey
;
61 /* Sub-keys for CFBundleDocumentTypes dictionaries */
63 const CFStringRef _kCFBundleTypeNameKey
;
65 const CFStringRef _kCFBundleTypeRoleKey
;
67 const CFStringRef _kCFBundleTypeIconFileKey
;
69 const CFStringRef _kCFBundleTypeOSTypesKey
;
71 const CFStringRef _kCFBundleTypeExtensionsKey
;
73 const CFStringRef _kCFBundleTypeMIMETypesKey
;
75 /* Sub-keys for CFBundleURLTypes dictionaries */
77 const CFStringRef _kCFBundleURLNameKey
;
79 const CFStringRef _kCFBundleURLIconFileKey
;
81 const CFStringRef _kCFBundleURLSchemesKey
;
83 /* Compatibility key names */
85 const CFStringRef _kCFBundleOldExecutableKey
;
87 const CFStringRef _kCFBundleOldInfoDictionaryVersionKey
;
89 const CFStringRef _kCFBundleOldNameKey
;
91 const CFStringRef _kCFBundleOldIconFileKey
;
93 const CFStringRef _kCFBundleOldDocumentTypesKey
;
95 const CFStringRef _kCFBundleOldShortVersionStringKey
;
97 /* Compatibility CFBundleDocumentTypes key names */
99 const CFStringRef _kCFBundleOldTypeNameKey
;
101 const CFStringRef _kCFBundleOldTypeRoleKey
;
103 const CFStringRef _kCFBundleOldTypeIconFileKey
;
105 const CFStringRef _kCFBundleOldTypeExtensions1Key
;
107 const CFStringRef _kCFBundleOldTypeExtensions2Key
;
109 const CFStringRef _kCFBundleOldTypeOSTypesKey
;
112 /* Functions for examining directories that may "look like" bundles */
115 CFURLRef
_CFBundleCopyBundleURLForExecutableURL(CFURLRef url
);
118 Boolean
_CFBundleURLLooksLikeBundle(CFURLRef url
);
121 CFBundleRef
_CFBundleCreateIfLooksLikeBundle(CFAllocatorRef allocator
, CFURLRef url
);
124 CFBundleRef
_CFBundleGetMainBundleIfLooksLikeBundle(void);
127 Boolean
_CFBundleMainBundleInfoDictionaryComesFromResourceFork(void);
130 CFBundleRef
_CFBundleCreateWithExecutableURLIfLooksLikeBundle(CFAllocatorRef allocator
, CFURLRef url
);
133 CFURLRef
_CFBundleCopyMainBundleExecutableURL(Boolean
*looksLikeBundle
);
136 CFBundleRef
_CFBundleGetExistingBundleWithBundleURL(CFURLRef bundleURL
);
138 /* Functions for examining the structure of a bundle */
141 CFURLRef
_CFBundleCopyResourceForkURL(CFBundleRef bundle
);
144 CFURLRef
_CFBundleCopyInfoPlistURL(CFBundleRef bundle
);
147 /* Functions for working without a bundle instance */
150 CFURLRef
_CFBundleCopyExecutableURLInDirectory(CFURLRef url
);
153 CFURLRef
_CFBundleCopyOtherExecutableURLInDirectory(CFURLRef url
);
156 /* Functions for dealing with localizations */
159 void _CFBundleGetLanguageAndRegionCodes(SInt32
*languageCode
, SInt32
*regionCode
);
160 // may return -1 for either one if no code can be found
163 Boolean
CFBundleGetLocalizationInfoForLocalization(CFStringRef localizationName
, SInt32
*languageCode
, SInt32
*regionCode
, SInt32
*scriptCode
, CFStringEncoding
*stringEncoding
);
164 /* Gets the appropriate language and region codes, and the default */
165 /* script code and encoding, for the localization specified. */
166 /* Pass NULL for the localizationName to get these values for the */
167 /* single most preferred localization in the current context. */
168 /* May give -1 if there is no language or region code for a particular */
169 /* localization. Returns false if CFBundle has no information about */
170 /* the given localization. */
173 CFStringRef
CFBundleCopyLocalizationForLocalizationInfo(SInt32 languageCode
, SInt32 regionCode
, SInt32 scriptCode
, CFStringEncoding stringEncoding
);
174 /* Returns the default localization for the combination of codes */
175 /* specified. Pass in -1 for language, region code, or script code, or */
176 /* 0xFFFF for stringEncoding, if you do not wish to specify one of these. */
179 void _CFBundleSetDefaultLocalization(CFStringRef localizationName
);
182 /* Functions for dealing specifically with CFM executables */
185 void *_CFBundleGetCFMFunctionPointerForName(CFBundleRef bundle
, CFStringRef funcName
);
188 void _CFBundleGetCFMFunctionPointersForNames(CFBundleRef bundle
, CFArrayRef functionNames
, void *ftbl
[]);
191 void _CFBundleSetCFMConnectionID(CFBundleRef bundle
, void *connectionID
);
194 /* Miscellaneous functions */
197 CFStringRef
_CFBundleCopyFileTypeForFileURL(CFURLRef url
);
200 CFStringRef
_CFBundleCopyFileTypeForFileData(CFDataRef data
);
203 Boolean
_CFBundleGetHasChanged(CFBundleRef bundle
);
206 void _CFBundleFlushCaches(void);
209 void _CFBundleFlushCachesForURL(CFURLRef url
);
212 void _CFBundleFlushBundleCaches(CFBundleRef bundle
); // The previous two functions flush cached resource paths; this one also flushes bundle-specific caches such as the info dictionary and strings files
215 void _CFBundleSetStringsFilesShared(CFBundleRef bundle
, Boolean flag
);
218 Boolean
_CFBundleGetStringsFilesShared(CFBundleRef bundle
);
221 /* Functions deprecated as SPI */
224 CFDictionaryRef
_CFBundleGetLocalInfoDictionary(CFBundleRef bundle
); // deprecated in favor of CFBundleGetLocalInfoDictionary
227 CFPropertyListRef
_CFBundleGetValueForInfoKey(CFBundleRef bundle
, CFStringRef key
); // deprecated in favor of CFBundleGetValueForInfoDictionaryKey
230 Boolean
_CFBundleGetPackageInfoInDirectory(CFAllocatorRef alloc
, CFURLRef url
, UInt32
*packageType
, UInt32
*packageCreator
); // deprecated in favor of CFBundleGetPackageInfoInDirectory
233 CFDictionaryRef
_CFBundleCopyInfoDictionaryInResourceFork(CFURLRef url
); // CFBundleCopyInfoDictionaryForURL is usually preferred; for the main bundle, however, no special call is necessary, since the info dictionary will automatically be available whether the app is bundled or not
236 CFURLRef
_CFBundleCopyPrivateFrameworksURL(CFBundleRef bundle
); // deprecated in favor of CFBundleCopyPrivateFrameworksURL
239 CFURLRef
_CFBundleCopySharedFrameworksURL(CFBundleRef bundle
); // deprecated in favor of CFBundleCopySharedFrameworksURL
242 CFURLRef
_CFBundleCopySharedSupportURL(CFBundleRef bundle
); // deprecated in favor of CFBundleCopySharedSupportURL
245 CFURLRef
_CFBundleCopyBuiltInPlugInsURL(CFBundleRef bundle
); // deprecated in favor of CFBundleCopyBuiltInPlugInsURL
248 CFArrayRef
_CFBundleCopyBundleRegionsArray(CFBundleRef bundle
); // deprecated in favor of CFBundleCopyBundleLocalizations
251 CFURLRef
_CFBundleCopyResourceURLForLanguage(CFBundleRef bundle
, CFStringRef resourceName
, CFStringRef resourceType
, CFStringRef subDirName
, CFStringRef language
); // deprecated in favor of CFBundleCopyResourceURLForLocalization
254 CFArrayRef
_CFBundleCopyResourceURLsOfTypeForLanguage(CFBundleRef bundle
, CFStringRef resourceType
, CFStringRef subDirName
, CFStringRef language
); // deprecated in favor of CFBundleCopyResourceURLsOfTypeForLocalization
257 CFBundleRefNum
_CFBundleOpenBundleResourceFork(CFBundleRef bundle
); // deprecated in favor of CFBundleOpenBundleResourceMap
260 void _CFBundleCloseBundleResourceFork(CFBundleRef bundle
); // deprecated in favor of CFBundleCloseBundleResourceMap
264 #endif /* ! __COREFOUNDATION_CFBUNDLEPRIV__ */