From bbbbb17258c5b1528373c3ac5870e9aad61987a8 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 25 Jun 2012 14:40:03 -0400 Subject: [PATCH] For iOS, build the Mac OS X platform code, not the generic Unix code. Also removed some Carbon calls; use CoreFoundation instead. These functions exist in all versions of Mac OS X and iOS, and replace the Mac OS Classic APIs we were previously depending upon. --- src/physfs_platforms.h | 13 +++++-------- src/platform_macosx.c | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/physfs_platforms.h b/src/physfs_platforms.h index accb7f6f..2a3110d1 100644 --- a/src/physfs_platforms.h +++ b/src/physfs_platforms.h @@ -27,15 +27,12 @@ # error OS/2 support was dropped from PhysicsFS 2.1. Sorry. #elif ((defined __MACH__) && (defined __APPLE__)) /* To check if iphone or not, we need to include this file */ -# include -# if ((TARGET_IPHONE_SIMULATOR) || (TARGET_OS_IPHONE)) -# define PHYSFS_PLATFORM_UNIX 1 -# define PHYSFS_PLATFORM_POSIX 1 -# define PHYSFS_NO_CDROM_SUPPORT 1 -# else -# define PHYSFS_PLATFORM_MACOSX 1 -# define PHYSFS_PLATFORM_POSIX 1 +# include +# if ((TARGET_IPHONE_SIMULATOR) || (TARGET_OS_IPHONE)) +# define PHYSFS_NO_CDROM_SUPPORT 1 # endif +# define PHYSFS_PLATFORM_MACOSX 1 +# define PHYSFS_PLATFORM_POSIX 1 #elif defined(macintosh) # error Classic Mac OS support was dropped from PhysicsFS 2.0. Move to OS X. #elif defined(__linux) diff --git a/src/platform_macosx.c b/src/platform_macosx.c index 187916a8..a73ac54a 100644 --- a/src/platform_macosx.c +++ b/src/platform_macosx.c @@ -11,11 +11,15 @@ #ifdef PHYSFS_PLATFORM_MACOSX -#include +#include + +#if !defined(PHYSFS_NO_CDROM_SUPPORT) #include #include #include #include +#endif + #include /* Seems to get defined in some system header... */ @@ -80,6 +84,7 @@ int __PHYSFS_platformDeinit(void) } /* __PHYSFS_platformDeinit */ + /* CD-ROM detection code... */ /* @@ -87,6 +92,8 @@ int __PHYSFS_platformDeinit(void) * http://developer.apple.com/samplecode/Sample_Code/Devices_and_Hardware/Disks/VolumeToBSDNode/VolumeToBSDNode.c.htm */ +#if !defined(PHYSFS_NO_CDROM_SUPPORT) + static int darwinIsWholeMedia(io_service_t service) { int retval = 0; @@ -161,9 +168,12 @@ static int darwinIsMountedDisc(char *bsdName, mach_port_t masterPort) return retval; } /* darwinIsMountedDisc */ +#endif /* !defined(PHYSFS_NO_CDROM_SUPPORT) */ + void __PHYSFS_platformDetectAvailableCDs(PHYSFS_StringCallback cb, void *data) { +#if !defined(PHYSFS_NO_CDROM_SUPPORT) const char *devPrefix = "/dev/"; const int prefixLen = strlen(devPrefix); mach_port_t masterPort = 0; @@ -185,6 +195,7 @@ void __PHYSFS_platformDetectAvailableCDs(PHYSFS_StringCallback cb, void *data) if (darwinIsMountedDisc(dev, masterPort)) cb(data, mnt); } /* for */ +#endif /* !defined(PHYSFS_NO_CDROM_SUPPORT) */ } /* __PHYSFS_platformDetectAvailableCDs */ @@ -219,9 +230,7 @@ static char *convertCFString(CFStringRef cfstr) char *__PHYSFS_platformCalcBaseDir(const char *argv0) { - ProcessSerialNumber psn = { 0, kCurrentProcess }; struct stat statbuf; - FSRef fsref; CFRange cfrange; CFURLRef cfurl = NULL; CFStringRef cfstr = NULL; @@ -230,9 +239,7 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0) char *cstr = NULL; int rc = 0; - if (GetProcessBundleLocation(&psn, &fsref) != noErr) - BAIL_MACRO(PHYSFS_ERR_OS_ERROR, NULL); - cfurl = CFURLCreateFromFSRef(cfallocator, &fsref); + cfurl = CFBundleCopyBundleURL(CFBundleGetMainBundle()); BAIL_IF_MACRO(cfurl == NULL, PHYSFS_ERR_OS_ERROR, NULL); cfstr = CFURLCopyFileSystemPath(cfurl, kCFURLPOSIXPathStyle); CFRelease(cfurl);