aboutsummaryrefslogtreecommitdiff
path: root/common/file.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/file.cpp')
-rw-r--r--common/file.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/common/file.cpp b/common/file.cpp
index 871e4f6053..900edf966c 100644
--- a/common/file.cpp
+++ b/common/file.cpp
@@ -23,6 +23,10 @@
#include "common/file.h"
#include "common/util.h"
+#ifdef MACOSX
+#include "CoreFoundation/CoreFoundation.h"
+#endif
+
namespace Common {
StringList File::_defaultDirectories;
@@ -98,6 +102,24 @@ static FILE *fopenNoCase(const char *filename, const char *directory, const char
}
#endif
+// If all else fails, try looking inside the application bundle on MacOS for the lowercase file.
+#ifdef MACOSX
+ if (!file) {
+ ptr = buf + offsetToFileName;
+ while (*ptr) {
+ *ptr = tolower(*ptr);
+ ptr++;
+ }
+
+ CFStringRef fileName = CFStringCreateWithBytes(NULL, (const UInt8 *)buf, strlen(buf), kCFStringEncodingASCII, false);
+ CFURLRef fileUrl = CFBundleCopyResourceURL(CFBundleGetMainBundle(), fileName, NULL, NULL);
+ if (fileUrl) {
+ if (CFURLGetFileSystemRepresentation(fileUrl, true, (UInt8 *)buf, sizeof(buf)))
+ file = fopen(buf, mode);
+ }
+ }
+#endif
+
return file;
}