#include "dcpomatic_log.h"
#include "config.h"
#include "exceptions.h"
+#include <dcp/filesystem.h>
#include <dcp/raw_convert.h>
#include <glib.h>
#include <boost/algorithm/string.hpp>
boost::filesystem::path
directory_containing_executable ()
{
- return boost::filesystem::canonical(boost::dll::program_location()).parent_path();
+ return dcp::filesystem::canonical(boost::dll::program_location()).parent_path();
}
void
-run_ffprobe (boost::filesystem::path content, boost::filesystem::path out)
+run_ffprobe(boost::filesystem::path content, boost::filesystem::path out, bool err, string args)
{
auto path = directory_containing_executable () / "ffprobe";
+ if (!dcp::filesystem::exists(path)) {
+ /* This is a hack but we need ffprobe during tests */
+ path = "/Users/ci/workspace/bin/ffprobe";
+ }
+ string const redirect = err ? "2>" : ">";
- string ffprobe = "\"" + path.string() + "\" \"" + content.string() + "\" 2> \"" + out.string() + "\"";
+ auto const ffprobe = String::compose("\"%1\" %2 \"%3\" %4 \"%5\"", path, args.empty() ? " " : args, content.string(), redirect, out.string());
LOG_GENERAL (N_("Probing with %1"), ffprobe);
- system (ffprobe.c_str ());
+ system (ffprobe.c_str());
}
using namespace boost::algorithm;
vector<OSXDisk> disks;
+ LOG_DISK_NC("Drive::get() starts");
+
auto session = DASessionCreate(kCFAllocatorDefault);
if (!session) {
return {};
}
+ LOG_DISK_NC("Drive::get() has session");
+
DARegisterDiskAppearedCallback (session, NULL, disk_appeared, &disks);
auto run_loop = CFRunLoopGetCurrent ();
DASessionScheduleWithRunLoop (session, run_loop, kCFRunLoopDefaultMode);
DAUnregisterCallback(session, (void *) disk_appeared, &disks);
CFRelease(session);
- return osx_disks_to_drives (disks);
+ auto drives = osx_disks_to_drives(disks);
+
+ LOG_DISK("Drive::get() found %1 drives:", drives.size());
+ for (auto const& drive: drives) {
+ LOG_DISK("%1 %2 mounted=%3", drive.description(), drive.device(), drive.mounted() ? "yes" : "no");
+ }
+
+ return drives;
}