diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-01-17 22:56:52 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-01-19 20:39:20 +0100 |
| commit | a3c73134fad8a4261c7cd655ae7531b347a78ac7 (patch) | |
| tree | 968eb89c191e0287a64bd7ca67bed5614c49e734 /src/lib/cross_common.cc | |
| parent | 9bc077322d49107fc464f4cfd2d66e9c2860f0a3 (diff) | |
Extract part of analyse_media_path to cross_common for tests.
Diffstat (limited to 'src/lib/cross_common.cc')
| -rw-r--r-- | src/lib/cross_common.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/lib/cross_common.cc b/src/lib/cross_common.cc index 2e48bf3e0..17546f712 100644 --- a/src/lib/cross_common.cc +++ b/src/lib/cross_common.cc @@ -27,12 +27,15 @@ DCPOMATIC_DISABLE_WARNINGS #include <libxml++/libxml++.h> DCPOMATIC_ENABLE_WARNINGS +#include <boost/algorithm/string.hpp> #include <iostream> #include "i18n.h" using std::string; +using std::vector; +using boost::optional; Drive::Drive (string xml) @@ -113,3 +116,39 @@ Drive::log_summary () const _device, mp, _size, _vendor.get_value_or("[none]"), _model.get_value_or("[none]") ); } + + + +/* This is in _common so we can use it in unit tests */ +optional<OSXMediaPath> +analyse_osx_media_path (string path) +{ + using namespace boost::algorithm; + + if (path.find("/IOHDIXController") != string::npos) { + /* This is a disk image, so we completely ignore it */ + LOG_DISK_NC("Ignoring this as it seems to be a disk image"); + return {}; + } + + OSXMediaPath mp; + if (starts_with(path, "IODeviceTree:")) { + mp.real = true; + } else if (starts_with(path, "IOService:")) { + mp.real = false; + } else { + return {}; + } + + vector<string> bits; + split(bits, path, boost::is_any_of("/")); + for (auto i: bits) { + if (starts_with(i, "PRT")) { + mp.prt = i; + } + } + + return mp; +} + + |
