summaryrefslogtreecommitdiff
path: root/src/lib/cross.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-10-12 19:55:10 +0100
committerCarl Hetherington <cth@carlh.net>2013-10-12 19:55:10 +0100
commit6b81b3e6a8ac208c0941536d4388f19fb85efc72 (patch)
treebc4ee885e7ea185eedca0c722c98971a294a90e7 /src/lib/cross.cc
parenta9c598df9f78c0284f75f52bb36ff30b0bb1071c (diff)
Try to fix xmlsec startup on OS X.
Diffstat (limited to 'src/lib/cross.cc')
-rw-r--r--src/lib/cross.cc30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/lib/cross.cc b/src/lib/cross.cc
index 47f07cf9d..30a953bb8 100644
--- a/src/lib/cross.cc
+++ b/src/lib/cross.cc
@@ -35,6 +35,7 @@
#include <sys/sysctl.h>
#include <mach-o/dyld.h>
#endif
+#include "exceptions.h"
using std::pair;
using std::list;
@@ -114,6 +115,24 @@ cpu_info ()
return info;
}
+#ifdef DCPOMATIC_OSX
+/** @return Path of the Contents directory in the .app */
+boost::filesystem::path
+app_contents ()
+{
+ uint32_t size = 1024;
+ char buffer[size];
+ if (_NSGetExecutablePath (buffer, &size)) {
+ throw StringError ("_NSGetExecutablePath failed");
+ }
+
+ boost::filesystem::path path (buffer);
+ path.remove_filename ();
+ path.remove_filename ();
+ return path;
+}
+#endif
+
void
run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, shared_ptr<Log> log)
{
@@ -189,15 +208,8 @@ run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, share
#endif
#ifdef DCPOMATIC_OSX
- uint32_t size = 1024;
- char buffer[size];
- if (_NSGetExecutablePath (buffer, &size)) {
- log->log ("_NSGetExecutablePath failed");
- return;
- }
-
- boost::filesystem::path path (buffer);
- path.remove_filename ();
+ boost::filesystem::path path = app_contents();
+ path /= "MacOS";
path /= "ffprobe";
string ffprobe = path.string() + " \"" + content.string() + "\" 2> \"" + out.string() + "\"";