summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/FileUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Src/FileUtil.cpp')
-rw-r--r--Source/Core/Common/Src/FileUtil.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp
index e649dfaaf9..e75ec1ee0c 100644
--- a/Source/Core/Common/Src/FileUtil.cpp
+++ b/Source/Core/Common/Src/FileUtil.cpp
@@ -32,6 +32,15 @@
#include <stdlib.h>
#endif
+#if defined(__APPLE__)
+
+#include <CoreFoundation/CFString.h>
+#include <CoreFoundation/CFUrl.h>
+#include <CoreFoundation/CFBundle.h>
+#include <sys/param.h>
+
+#endif
+
#include <fstream>
#include <sys/stat.h>
@@ -287,6 +296,54 @@ std::string GetUserDirectory()
return std::string(path);
}
+
+//osx specific functions
+#if defined(__APPLE__)
+
+std::string GetBundleDirectory()
+{
+
+ // Plugin path will be Dolphin.app/Contents/PlugIns
+ CFURLRef BundleRef;
+ char AppBundlePath[MAXPATHLEN];
+
+ // Get the main bundle for the app
+ BundleRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
+
+ CFStringRef BundlePath = CFURLCopyFileSystemPath(BundleRef, kCFURLPOSIXPathStyle);
+ CFStringGetFileSystemRepresentation(BundlePath, AppBundlePath, sizeof(AppBundlePath));
+
+ CFRelease(BundleRef);
+ CFRelease(BundlePath);
+
+ return AppBundlePath;
+
+
+}
+std::string GetPluginsDirectory()
+{
+
+ CFURLRef PluginDirRef;
+ char PluginPath[MAXPATHLEN];
+
+ PluginDirRef = CFBundleCopyBuiltInPlugInsURL(CFBundleGetMainBundle());
+
+ CFStringRef PluginDirPath = CFURLCopyFileSystemPath(PluginDirRef, kCFURLPOSIXPathStyle);
+ CFStringGetFileSystemRepresentation(PluginDirPath, PluginPath, sizeof(PluginPath));
+
+ CFRelease(PluginDirRef);
+ CFRelease(PluginDirPath);
+
+ std::string PluginsDir = GetBundleDirectory();
+ PluginsDir += DIR_SEP;
+ PluginsDir += PluginPath;
+
+ return PluginsDir;
+
+}
+
+
+#endif
u64 GetSize(const char *filename)
{
if (!Exists(filename))