summaryrefslogtreecommitdiff
path: root/src/asset_reader.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-10-06 02:04:49 +0200
committerCarl Hetherington <cth@carlh.net>2023-10-09 01:20:01 +0200
commite4b2ebd80779a44d24fe87af26ef278c1e2d97d2 (patch)
tree3bc940c5eb49c96c3c18a896c8ccd8039e6db839 /src/asset_reader.h
parent3be26a66645de04c7b220abeebfd2f024990a696 (diff)
Add wrappers around boost::filesystem methods that handle the
required mangling of long filenames on Windows. Also wrap lots of missing places (e.g. calls to asdcplib, libxml++, libcxml etc.) in dcp::filesystem::fix_long_path(). The idea is to keep paths un-mangled until they we call some filesystem-related API and mangle them at that point. Otherwise we end up serialising mangled names, which seems like it will not end well. Should fix DoM #2623.
Diffstat (limited to 'src/asset_reader.h')
-rw-r--r--src/asset_reader.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/asset_reader.h b/src/asset_reader.h
index 8478b51f..c8953e09 100644
--- a/src/asset_reader.h
+++ b/src/asset_reader.h
@@ -44,6 +44,7 @@
#include "asset.h"
#include "crypto_context.h"
#include "dcp_assert.h"
+#include "filesystem.h"
#include <asdcp/AS_DCP.h>
#include <memory>
@@ -98,7 +99,7 @@ private:
{
_reader = new R ();
DCP_ASSERT (asset->file());
- auto const r = _reader->OpenRead (asset->file()->string().c_str());
+ auto const r = _reader->OpenRead(dcp::filesystem::fix_long_path(*asset->file()).string().c_str());
if (ASDCP_FAILURE(r)) {
delete _reader;
boost::throw_exception (FileError("could not open MXF file for reading", asset->file().get(), r));