- list<string> notes;
-
- if (opt.flags & LIBDCP_METADATA) {
- if (_mxf_name != other->_mxf_name) {
- notes.push_back ("MXF names differ");
- }
- if (_fps != other->_fps) {
- notes.push_back ("MXF frames per second differ");
- }
- if (_length != other->_length) {
- notes.push_back ("MXF lengths differ");
- }
- }
-
- if (opt.flags & MXF_BITWISE) {
-
- if (digest() != other->digest()) {
- notes.push_back ("MXF digests differ");
- }
-
- if (filesystem::file_size (mxf_path()) != filesystem::file_size (other->mxf_path())) {
- notes.push_back (mxf_path().string() + " and " + other->mxf_path().string() + " sizes differ");
- return notes;
- }
-
- ifstream a (mxf_path().string().c_str(), ios::binary);
- ifstream b (other->mxf_path().string().c_str(), ios::binary);
-
- int buffer_size = 65536;
- char abuffer[buffer_size];
- char bbuffer[buffer_size];
-
- int n = filesystem::file_size (mxf_path ());
-
- while (n) {
- int const t = min (n, buffer_size);
- a.read (abuffer, t);
- b.read (bbuffer, t);
-
- if (memcmp (abuffer, bbuffer, t) != 0) {
- notes.push_back (mxf_path().string() + " and " + other->mxf_path().string() + " content differs");
- return notes;
- }
-
- n -= t;
- }
+ optional<boost::filesystem::path> path = relative_to_root (
+ boost::filesystem::canonical (root),
+ boost::filesystem::canonical (file)
+ );
+
+ if (!path) {
+ /* The path of this asset is not within our DCP, so we assume it's an external
+ (referenced) one.
+ */
+ return;