summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/FileUtil.cpp
diff options
context:
space:
mode:
authortmator <tmator@gmail.com>2009-02-26 07:24:50 +0000
committertmator <tmator@gmail.com>2009-02-26 07:24:50 +0000
commit0b8f7439cb27bbc88f94dd18d4d1069d8d1f48a2 (patch)
tree8cc6dffb6b46d400f614fb086bf0ecd3e3541447 /Source/Core/Common/Src/FileUtil.cpp
parent491e24792a233d813f702d885ab43b72b76997e6 (diff)
fix plugin dir on osx
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2443 8ced0084-cf51-0410-be5f-012b33b47a6e
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))