Fix some spelling mistakes (mostly in comments).
[dcpomatic.git] / src / lib / cross_common.cc
index bc1a543678964a8daeaf8e9c69a708649bd54cfc..e8c209b21e098f8da981bd5676af55c0c00b65ab 100644 (file)
 
 #include "cross.h"
 #include "compose.hpp"
+#include "dcpomatic_assert.h"
 #include "dcpomatic_log.h"
-#include "warnings.h"
 #include <dcp/raw_convert.h>
-DCPOMATIC_DISABLE_WARNINGS
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
 #include <libxml++/libxml++.h>
-DCPOMATIC_ENABLE_WARNINGS
+LIBDCP_ENABLE_WARNINGS
 #include <boost/algorithm/string.hpp>
 #include <iostream>
 
@@ -39,6 +40,9 @@ using std::vector;
 using boost::optional;
 
 
+auto constexpr MEDIA_PATH_REQUIRED_MATCHES = 3;
+
+
 Drive::Drive (string xml)
 {
        cxml::Document doc;
@@ -137,8 +141,8 @@ analyse_osx_media_path (string path)
 
        if (!parts.empty() && parts[0] == "IODeviceTree:") {
                mp.real = true;
-               if (mp.parts.size() < 2) {
-                       /* Later we expect at least 2 parts in a IODeviceTree */
+               if (mp.parts.size() < MEDIA_PATH_REQUIRED_MATCHES) {
+                       /* Later we expect at least MEDIA_PATH_REQUIRED_MATCHES parts in a IODeviceTree */
                        LOG_DISK_NC("Ignoring this as it has a strange media path");
                        return {};
                }
@@ -152,7 +156,7 @@ analyse_osx_media_path (string path)
 }
 
 
-/* Take soem OSXDisk objects, representing disks that `DARegisterDiskAppearedCallback` told us about,
+/* Take some OSXDisk objects, representing disks that `DARegisterDiskAppearedCallback` told us about,
  * and find those drives that we could write a DCP to.  The drives returned are "real" (not synthesized)
  * and are whole disks (not partitions).  They may be mounted, or contain mounted partitions, in which
  * their mounted() method will return true.
@@ -180,14 +184,21 @@ osx_disks_to_drives (vector<OSXDisk> disks)
                if (i.media_path.real) {
                        for (auto& j: disks) {
                                if (!j.media_path.real && !j.mount_points.empty()) {
-                                       /* i is real, j is a mounted synth; if we see the first two parts
-                                        * of i anywhere in j we assume they are related and so i shares
-                                        * j's mount points.
+                                       /* i is real, j is a mounted synth; if we see the first MEDIA_PATH_REQUIRED_MATCHES parts
+                                        * of i anywhere in j we assume they are related and so i shares j's mount points.
                                         */
-                                       if (
-                                               find(j.media_path.parts.begin(), j.media_path.parts.end(), i.media_path.parts[0]) != j.media_path.parts.end() &&
-                                               find(j.media_path.parts.begin(), j.media_path.parts.end(), i.media_path.parts[1]) != j.media_path.parts.end()) {
-                                               LOG_DISK("Marking %1 as mounted because %2 is (found %3 and %4)", i.device, j.device, i.media_path.parts[0], i.media_path.parts[1]);
+                                       bool one_missing = false;
+                                       string all_parts;
+                                       DCPOMATIC_ASSERT (i.media_path.parts.size() >= MEDIA_PATH_REQUIRED_MATCHES);
+                                       for (auto k = 0; k < MEDIA_PATH_REQUIRED_MATCHES; ++k) {
+                                               if (find(j.media_path.parts.begin(), j.media_path.parts.end(), i.media_path.parts[k]) == j.media_path.parts.end()) {
+                                                       one_missing = true;
+                                               }
+                                               all_parts += i.media_path.parts[k] + " ";
+                                       }
+
+                                       if (!one_missing) {
+                                               LOG_DISK("Marking %1 as mounted because %2 is (found %3)", i.device, j.device, all_parts);
                                                std::copy(j.mount_points.begin(), j.mount_points.end(), back_inserter(i.mount_points));
                                        }
                                }