X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcross_osx.cc;h=8b60ff492f2cc8ea4234fa5fd309ce64c852d631;hb=a5d004b0773f633401528392fc28e66d70e13ac8;hp=e91d3df16c4a6e982bcd871aee39d3b2de77ed1e;hpb=99c1d1f247343b884af0b51389311484ed265d3b;p=dcpomatic.git diff --git a/src/lib/cross_osx.cc b/src/lib/cross_osx.cc index e91d3df16..8b60ff492 100644 --- a/src/lib/cross_osx.cc +++ b/src/lib/cross_osx.cc @@ -31,7 +31,6 @@ extern "C" { #include } #include -#include #include #if BOOST_VERSION >= 106100 #include @@ -64,7 +63,7 @@ using std::cerr; using std::cout; using std::runtime_error; using std::map; -using boost::shared_ptr; +using std::shared_ptr; using boost::optional; using boost::function; @@ -117,12 +116,26 @@ directory_containing_executable () boost::filesystem::path -shared_path () +resources_path () { return directory_containing_executable().parent_path() / "Resources"; } +boost::filesystem::path +xsd_path () +{ + return resources_path() / "xsd"; +} + + +boost::filesystem::path +tags_path () +{ + return resources_path() / "tags"; +} + + void run_ffprobe (boost::filesystem::path content, boost::filesystem::path out) { @@ -194,20 +207,22 @@ Waker::~Waker () void start_tool (string executable, string app) { - boost::filesystem::path batch = directory_containing_executable(); - batch = batch.parent_path (); // MacOS - batch = batch.parent_path (); // Contents - batch = batch.parent_path (); // DCP-o-matic.app - batch = batch.parent_path (); // Applications - batch /= app; - batch /= "Contents"; - batch /= "MacOS"; - batch /= executable; + boost::filesystem::path exe_path = directory_containing_executable(); + exe_path = exe_path.parent_path (); // Contents + exe_path = exe_path.parent_path (); // DCP-o-matic 2.app + exe_path = exe_path.parent_path (); // Applications + exe_path /= app; + exe_path /= "Contents"; + exe_path /= "MacOS"; + exe_path /= executable; pid_t pid = fork (); if (pid == 0) { - int const r = system (batch.string().c_str()); + LOG_GENERAL ("start_tool %1 %2 with path %3", executable, app, exe_path.string()); + int const r = system (exe_path.string().c_str()); exit (WEXITSTATUS (r)); + } else if (pid == -1) { + LOG_ERROR_NC("Fork failed in start_tool"); } } @@ -244,12 +259,6 @@ home_directory () return getenv("HOME"); } -string -command_and_read (string) -{ - return ""; -} - /** @return true if this process is a 32-bit one running on a 64-bit-capable OS */ bool running_32_on_64 () @@ -321,7 +330,7 @@ analyse_media_path (CFDictionaryRef& description) vector bits; split(bits, path, boost::is_any_of("/")); - BOOST_FOREACH (string i, bits) { + for (auto i: bits) { if (starts_with(i, "PRT")) { mp.prt = i; } @@ -458,11 +467,11 @@ Drive::get () CFRelease(session); /* Mark disks containing mounted partitions as themselves mounted */ - BOOST_FOREACH (Disk& i, disks) { + for (auto& i: disks) { if (!i.whole) { continue; } - BOOST_FOREACH (Disk& j, disks) { + for (auto& j: disks) { if (!j.mount_points.empty() && starts_with(j.mount_point, i.mount_point)) { LOG_DISK("Marking %1 as mounted because %2 is", i.mount_point, j.mount_point); std::copy(j.mount_points.begin(), j.mount_points.end(), back_inserter(i.mount_points)); @@ -472,7 +481,7 @@ Drive::get () /* Make a map of the PRT codes and mount points of mounted, synthesized disks */ map > mounted_synths; - BOOST_FOREACH (Disk& i, disks) { + for (auto& i: disks) { if (!i.real && !i.mount_points.empty()) { LOG_DISK("Found a mounted synth %1 with %2", i.mount_point, i.prt); mounted_synths[i.prt] = i.mount_points; @@ -480,7 +489,7 @@ Drive::get () } /* Mark containers of those mounted synths as themselves mounted */ - BOOST_FOREACH (Disk& i, disks) { + for (auto& i: disks) { if (i.real) { map >::const_iterator j = mounted_synths.find(i.prt); if (j != mounted_synths.end()) { @@ -491,7 +500,7 @@ Drive::get () } vector drives; - BOOST_FOREACH (Disk& i, disks) { + for (auto& i: disks) { if (i.whole) { /* A whole disk that is not a container for a mounted synth */ drives.push_back(Drive(i.mount_point, i.mount_points, i.size, i.vendor, i.model)); @@ -576,3 +585,9 @@ DCPOMATIC_ENABLE_WARNINGS TransformProcessType (&serial, kProcessTransformToForegroundApplication); } + +string +dcpomatic::get_process_id () +{ + return dcp::raw_convert(getpid()); +}