summaryrefslogtreecommitdiffstats
path: root/macosx/tclMacOSXBundle.c
diff options
context:
space:
mode:
authordas <das>2004-07-20 05:40:57 (GMT)
committerdas <das>2004-07-20 05:40:57 (GMT)
commit281500f39ea00f49bce3fd08e71e69b440482c21 (patch)
tree766fd97a045cbf0a56e9a00c7d91158040179360 /macosx/tclMacOSXBundle.c
parentafaa17239f992c094f9d5c07a7ada3c58e205993 (diff)
downloadtcl-281500f39ea00f49bce3fd08e71e69b440482c21.zip
tcl-281500f39ea00f49bce3fd08e71e69b440482c21.tar.gz
tcl-281500f39ea00f49bce3fd08e71e69b440482c21.tar.bz2
* macosx/tclMacOSXBundle.c: dynamically acquire address for
CFBundleOpenBundleResourceMap symbol, since it is only present in full CoreFoundation on Mac OS X and not in CFLite on pure Darwin.
Diffstat (limited to 'macosx/tclMacOSXBundle.c')
-rw-r--r--macosx/tclMacOSXBundle.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/macosx/tclMacOSXBundle.c b/macosx/tclMacOSXBundle.c
index 5018aa8..8d50494 100644
--- a/macosx/tclMacOSXBundle.c
+++ b/macosx/tclMacOSXBundle.c
@@ -52,6 +52,7 @@
*/
#include <CoreFoundation/CoreFoundation.h>
+#include <mach-o/dyld.h>
#include "tcl.h"
/*
@@ -167,8 +168,25 @@ Tcl_MacOSXOpenVersionedBundleResources(
if (bundleRef) {
if (hasResourceFile) {
- short refNum;
- refNum = CFBundleOpenBundleResourceMap(bundleRef);
+ /* Dynamically acquire address for CFBundleOpenBundleResourceMap
+ * symbol, since it is only present in full CoreFoundation
+ * on Mac OS X and not in CFLite on pure Darwin. */
+ static int initialized = FALSE;
+ static short (*openresourcemap)(CFBundleRef) = NULL;
+ if(!initialized) {
+ NSSymbol nsSymbol = NULL;
+ if(NSIsSymbolNameDefinedWithHint("_CFBundleOpenBundleResourceMap", "CoreFoundation")) {
+ nsSymbol = NSLookupAndBindSymbolWithHint("_CFBundleOpenBundleResourceMap", "CoreFoundation");
+ if(nsSymbol) {
+ openresourcemap = NSAddressOfSymbol(nsSymbol);
+ }
+ }
+ initialized = TRUE;
+ }
+ if (openresourcemap) {
+ short refNum;
+ refNum = openresourcemap(bundleRef);
+ }
}
libURL = CFBundleCopyResourceURL(bundleRef,