[Scummvm-git-logs] scummvm master -> f38b73201296942e9c82db35a5b5a18ec00ddf8c
sev-
noreply at scummvm.org
Wed Jul 19 16:51:42 UTC 2023
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b8acbe6bee COMMON: Archive path refactoring, add getFileName and getPathInArchive that unambiguously return the filename or the ful
f38b732012 COMMON: Fix override without "override" qualifier warning
Commit: b8acbe6bee730a9024e73acc769b54285be9afde
https://github.com/scummvm/scummvm/commit/b8acbe6bee730a9024e73acc769b54285be9afde
Author: elasota (ejlasota at gmail.com)
Date: 2023-07-19T18:51:37+02:00
Commit Message:
COMMON: Archive path refactoring, add getFileName and getPathInArchive that unambiguously return the filename or the full path
Changed paths:
backends/platform/sdl/win32/win32.cpp
common/archive.cpp
common/archive.h
common/compression/clickteam.cpp
common/compression/gentee_installer.cpp
common/compression/installshield_cab.cpp
common/compression/installshieldv3_archive.cpp
common/compression/stuffit.cpp
common/compression/unarj.cpp
common/compression/unzip.cpp
common/compression/vise.cpp
common/formats/prodos.cpp
common/formats/prodos.h
common/fs.cpp
common/fs.h
engines/director/game-quirks.cpp
engines/director/resource.cpp
engines/dreamweb/rnca_archive.cpp
engines/glk/blorb.cpp
engines/glk/comprehend/pics.cpp
engines/glk/hugo/resource_archive.cpp
engines/glk/zcode/pics.cpp
engines/glk/zcode/sound_folder.cpp
engines/grim/lab.h
engines/grim/update/lang_filter.cpp
engines/grim/update/mscab.cpp
engines/hypno/libfile.cpp
engines/kyra/resource/resource_intern.cpp
engines/lastexpress/data/archive.cpp
engines/lastexpress/resource.cpp
engines/mads/mps_installer.cpp
engines/mads/resources.cpp
engines/mm/shared/utils/engine_data.cpp
engines/mm/shared/xeen/cc_archive.cpp
engines/mohawk/installer_archive.cpp
engines/ngi/ngiarchive.cpp
engines/parallaction/disk_ns.cpp
engines/prince/archive.cpp
engines/stark/formats/xarc.cpp
engines/sword25/package/packagemanager.cpp
engines/trecision/fastfile.cpp
engines/ultima/shared/engine/data_archive.cpp
engines/ultima/shared/engine/resources.cpp
engines/ultima/ultima8/filesys/savegame.cpp
engines/wintermute/base/file/base_file_entry.h
engines/zvision/file/zfs_archive.cpp
diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp
index d1bdbcd5772..088f65c1fb8 100644
--- a/backends/platform/sdl/win32/win32.cpp
+++ b/backends/platform/sdl/win32/win32.cpp
@@ -455,14 +455,13 @@ int Win32ResourceArchive::listMembers(Common::ArchiveMemberList &list) const {
int count = 0;
for (FilenameList::const_iterator i = _files.begin(); i != _files.end(); ++i, ++count)
- list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(*i, this)));
+ list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(*i, *this)));
return count;
}
const Common::ArchiveMemberPtr Win32ResourceArchive::getMember(const Common::Path &path) const {
- Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SeekableReadStream *Win32ResourceArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/common/archive.cpp b/common/archive.cpp
index 25e642e04a6..e455e344d01 100644
--- a/common/archive.cpp
+++ b/common/archive.cpp
@@ -29,16 +29,28 @@
namespace Common {
-GenericArchiveMember::GenericArchiveMember(const String &name, const Archive *parent)
- : _parent(parent), _name(name) {
+GenericArchiveMember::GenericArchiveMember(const String &pathStr, const Archive &parent)
+ : _parent(parent), _path(pathStr, parent.getPathSeparator()) {
+}
+
+GenericArchiveMember::GenericArchiveMember(const Path &path, const Archive &parent)
+ : _parent(parent), _path(path) {
}
String GenericArchiveMember::getName() const {
- return _name;
+ return _path.toString(_parent.getPathSeparator());
+}
+
+Path GenericArchiveMember::getPathInArchive() const {
+ return _path;
+}
+
+String GenericArchiveMember::getFileName() const {
+ return _path.getLastComponent().toString(_parent.getPathSeparator());
}
SeekableReadStream *GenericArchiveMember::createReadStream() const {
- return _parent->createReadStreamForMember(_name);
+ return _parent.createReadStreamForMember(_path);
}
@@ -49,7 +61,10 @@ int Archive::listMatchingMembers(ArchiveMemberList &list, const Path &pattern, b
String patternString = pattern.toString();
int matches = 0;
- const char *wildcardExclusions = matchPathComponents ? NULL : "/";
+
+ char pathSepString[2] = {getPathSeparator(), '\0'};
+
+ const char *wildcardExclusions = matchPathComponents ? NULL : pathSepString;
ArchiveMemberList::const_iterator it = allNames.begin();
for (; it != allNames.end(); ++it) {
diff --git a/common/archive.h b/common/archive.h
index e3e45bd7b49..868a9d029c0 100644
--- a/common/archive.h
+++ b/common/archive.h
@@ -58,7 +58,15 @@ class ArchiveMember {
public:
virtual ~ArchiveMember() { }
virtual SeekableReadStream *createReadStream() const = 0; /*!< Create a read stream. */
- virtual String getName() const = 0; /*!< Get the name of the archive member. */
+
+ /**
+ * @deprecated Get the name of the archive member. This may be a file name or a full path depending on archive type.
+ * DEPRECATED: Use getFileName or getPathInArchive instead, which always returns one or the other.
+ */
+ virtual String getName() const = 0;
+
+ virtual Path getPathInArchive() const = 0; /*!< Get the full path of the archive member relative to the containing archive root. */
+ virtual String getFileName() const = 0; /*!< Get the file name of the archive member relative to its containing directory within the archive. */
virtual U32String getDisplayName() const { return getName(); } /*!< Get the display name of the archive member. */
};
@@ -86,12 +94,18 @@ class Archive;
* is destroyed.
*/
class GenericArchiveMember : public ArchiveMember {
- const Archive *_parent;
- const String _name;
public:
- GenericArchiveMember(const String &name, const Archive *parent); /*!< Create a generic archive member that belongs to the @p parent archive. */
- String getName() const; /*!< Get the name of a generic archive member. */
- SeekableReadStream *createReadStream() const; /*!< Create a read stream. */
+ GenericArchiveMember(const Common::String &pathStr, const Archive &parent); /*!< Create a generic archive member that belongs to the @p parent archive. */
+ GenericArchiveMember(const Common::Path &path, const Archive &parent); /*!< Create a generic archive member that belongs to the @p parent archive. */
+
+ String getName() const override; /*!< Get the name of a generic archive member. */
+ Path getPathInArchive() const override; /*!< Get the full path of the archive member relative to the containing archive root. */
+ String getFileName() const override; /*!< Get the file name of the archive member relative to its containing directory within the archive. */
+ SeekableReadStream *createReadStream() const override; /*!< Create a read stream. */
+
+private:
+ const Archive &_parent;
+ const Common::Path _path;
};
diff --git a/common/compression/clickteam.cpp b/common/compression/clickteam.cpp
index 934dcb5025a..da96087a3f9 100644
--- a/common/compression/clickteam.cpp
+++ b/common/compression/clickteam.cpp
@@ -474,7 +474,7 @@ int ClickteamInstaller::listMembers(ArchiveMemberList &list) const {
for (Common::HashMap<Common::String, ClickteamFileDescriptor, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo>::const_iterator i = _files.begin(), end = _files.end();
i != end; ++i) {
if (!i->_value._isReferenceMissing) {
- list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(i->_key, this)));
+ list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(i->_key, *this)));
++members;
}
}
@@ -491,7 +491,7 @@ const ArchiveMemberPtr ClickteamInstaller::getMember(const Path &path) const {
if (el._isReferenceMissing)
return nullptr;
- return Common::SharedPtr<Common::ArchiveMember>(new GenericArchiveMember(el._fileName, this));
+ return Common::SharedPtr<Common::ArchiveMember>(new GenericArchiveMember(el._fileName, *this));
}
Common::SharedArchiveContents ClickteamInstaller::readContentsForPath(const Common::String& translated) const {
diff --git a/common/compression/gentee_installer.cpp b/common/compression/gentee_installer.cpp
index 46f2640870d..ab0d71f5e80 100644
--- a/common/compression/gentee_installer.cpp
+++ b/common/compression/gentee_installer.cpp
@@ -586,6 +586,8 @@ public:
Common::SeekableReadStream *createReadStream() const override;
Common::String getName() const override;
+ Common::Path getPathInArchive() const override { return getName(); }
+ Common::String getFileName() const override { return getName(); }
const Common::String &getPath() const;
diff --git a/common/compression/installshield_cab.cpp b/common/compression/installshield_cab.cpp
index b377d5d3d33..2535e7497b4 100644
--- a/common/compression/installshield_cab.cpp
+++ b/common/compression/installshield_cab.cpp
@@ -278,8 +278,7 @@ int InstallShieldCabinet::listMembers(ArchiveMemberList &list) const {
}
const ArchiveMemberPtr InstallShieldCabinet::getMember(const Path &path) const {
- String name = path.toString();
- return ArchiveMemberPtr(new GenericArchiveMember(name, this));
+ return ArchiveMemberPtr(new GenericArchiveMember(path, *this));
}
SeekableReadStream *InstallShieldCabinet::createReadStreamForMember(const Path &path) const {
diff --git a/common/compression/installshieldv3_archive.cpp b/common/compression/installshieldv3_archive.cpp
index e52228b4aa6..983b48686d5 100644
--- a/common/compression/installshieldv3_archive.cpp
+++ b/common/compression/installshieldv3_archive.cpp
@@ -134,7 +134,7 @@ int InstallShieldV3::listMembers(Common::ArchiveMemberList &list) const {
const Common::ArchiveMemberPtr InstallShieldV3::getMember(const Common::Path &path) const {
Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *InstallShieldV3::createReadStreamForMember(const Common::Path &path) const {
diff --git a/common/compression/stuffit.cpp b/common/compression/stuffit.cpp
index aecbda59d9e..529fa07c928 100644
--- a/common/compression/stuffit.cpp
+++ b/common/compression/stuffit.cpp
@@ -279,8 +279,7 @@ int StuffItArchive::listMembers(Common::ArchiveMemberList &list) const {
}
const Common::ArchiveMemberPtr StuffItArchive::getMember(const Common::Path &path) const {
- Common::String name = path.toString(':');
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SharedArchiveContents StuffItArchive::readContentsForPath(const Common::String& name) const {
diff --git a/common/compression/unarj.cpp b/common/compression/unarj.cpp
index b0e3530b20a..4329877809f 100644
--- a/common/compression/unarj.cpp
+++ b/common/compression/unarj.cpp
@@ -775,7 +775,7 @@ int ArjArchive::listMembers(ArchiveMemberList &list) const {
ArjHeadersMap::const_iterator it = _headers.begin();
for ( ; it != _headers.end(); ++it) {
- list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(it->_value[0]._header->filename, this)));
+ list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(Common::String(it->_value[0]._header->filename), *this)));
matches++;
}
@@ -787,7 +787,7 @@ const ArchiveMemberPtr ArjArchive::getMember(const Path &path) const {
if (!hasFile(name))
return ArchiveMemberPtr();
- return ArchiveMemberPtr(new GenericArchiveMember(name, this));
+ return ArchiveMemberPtr(new GenericArchiveMember(name, *this));
}
Common::SharedArchiveContents ArjArchive::readContentsForPath(const Common::String& name) const {
diff --git a/common/compression/unzip.cpp b/common/compression/unzip.cpp
index 93a02f178fb..6fa71882ed6 100644
--- a/common/compression/unzip.cpp
+++ b/common/compression/unzip.cpp
@@ -1025,7 +1025,7 @@ int ZipArchive::listMembers(ArchiveMemberList &list) const {
const unz_s *const archive = (const unz_s *)_zipFile;
for (ZipHash::const_iterator i = archive->_hash.begin(), end = archive->_hash.end();
i != end; ++i) {
- list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(i->_key, this)));
+ list.push_back(ArchiveMemberList::value_type(new GenericArchiveMember(i->_key, *this)));
++members;
}
@@ -1037,7 +1037,7 @@ const ArchiveMemberPtr ZipArchive::getMember(const Path &path) const {
if (!hasFile(name))
return ArchiveMemberPtr();
- return ArchiveMemberPtr(new GenericArchiveMember(name, this));
+ return ArchiveMemberPtr(new GenericArchiveMember(path, *this));
}
Common::SharedArchiveContents ZipArchive::readContentsForPath(const Common::String& name) const {
diff --git a/common/compression/vise.cpp b/common/compression/vise.cpp
index 660049b8e08..0b107bee892 100644
--- a/common/compression/vise.cpp
+++ b/common/compression/vise.cpp
@@ -54,14 +54,14 @@ private:
uint16 containingDirectory;
Common::String name;
- Common::String fullPath;
+ Common::Path fullPath;
};
struct DirectoryDesc {
uint16 containingDirectory;
Common::String name;
- Common::String fullPath;
+ Common::Path fullPath;
};
class ArchiveMember : public Common::ArchiveMember {
@@ -76,6 +76,8 @@ private:
Common::SeekableReadStream *createReadStream() const override;
Common::String getName() const override;
+ Common::Path getPathInArchive() const override;
+ Common::String getFileName() const override;
private:
Common::SeekableReadStream *_archiveStream;
@@ -199,14 +201,27 @@ Common::SeekableReadStream *MacVISEArchive::ArchiveMember::createReadStream() co
}
Common::String MacVISEArchive::ArchiveMember::getName() const {
+ return getPathInArchive().getLastComponent().toString(':');
+}
+
+Common::Path MacVISEArchive::ArchiveMember::getPathInArchive() const {
if (_substreamType == kSubstreamTypeFinderInfo)
- return _fileDesc->fullPath + ".finf";
+ return _fileDesc->fullPath.append(".finf", ':');
else if (_substreamType == kSubstreamTypeResource)
- return _fileDesc->fullPath + ".rsrc";
+ return _fileDesc->fullPath.append(".rsrc", ':');
else
return _fileDesc->fullPath;
}
+Common::String MacVISEArchive::ArchiveMember::getFileName() const {
+ if (_substreamType == kSubstreamTypeFinderInfo)
+ return _fileDesc->name + ".finf";
+ else if (_substreamType == kSubstreamTypeResource)
+ return _fileDesc->name + ".rsrc";
+ else
+ return _fileDesc->name;
+}
+
MacVISEArchive::FileDesc::FileDesc() : type{0, 0, 0, 0}, creator{0, 0, 0, 0}, compressedDataSize(0), uncompressedDataSize(0), compressedResSize(0), uncompressedResSize(0), positionInArchive(0) {
}
@@ -320,7 +335,7 @@ bool MacVISEArchive::loadCatalog() {
if (dirDesc.containingDirectory > _directoryDescs.size())
error("VISE 3 containing directory index was invalid");
- dirDesc.fullPath = _directoryDescs[dirDesc.containingDirectory - 1].fullPath + ":" + dirDesc.name;
+ dirDesc.fullPath = _directoryDescs[dirDesc.containingDirectory - 1].fullPath.appendComponent(dirDesc.name);
}
}
@@ -331,7 +346,7 @@ bool MacVISEArchive::loadCatalog() {
if (fileDesc.containingDirectory > _directoryDescs.size())
error("VISE 3 containing directory index was invalid");
- fileDesc.fullPath = _directoryDescs[fileDesc.containingDirectory - 1].fullPath + ":" + fileDesc.name;
+ fileDesc.fullPath = _directoryDescs[fileDesc.containingDirectory - 1].fullPath.appendComponent(fileDesc.name);
}
}
@@ -339,9 +354,8 @@ bool MacVISEArchive::loadCatalog() {
}
const MacVISEArchive::FileDesc *MacVISEArchive::getFileDesc(const Common::Path &path) const {
- Common::String convertedPath = path.toString(':');
for (const FileDesc &desc : _fileDescs) {
- if (desc.fullPath == convertedPath)
+ if (desc.fullPath == path)
return &desc;
}
@@ -396,7 +410,8 @@ char MacVISEArchive::getPathSeparator() const {
}
bool MacVISEArchive::getFileDescIndex(const Common::Path &path, uint &outIndex, ArchiveMember::SubstreamType &outSubstreamType) const {
- Common::String convertedPath = path.toString(':');
+ Common::String convertedPath = path.toString(getPathSeparator());
+
ArchiveMember::SubstreamType substreamType = ArchiveMember::kSubstreamTypeData;
if (convertedPath.hasSuffix(".rsrc")) {
substreamType = ArchiveMember::kSubstreamTypeResource;
@@ -406,10 +421,12 @@ bool MacVISEArchive::getFileDescIndex(const Common::Path &path, uint &outIndex,
convertedPath = convertedPath.substr(0, convertedPath.size() - 5);
}
+ Common::Path filePath(convertedPath, getPathSeparator());
+
for (uint descIndex = 0; descIndex < _fileDescs.size(); descIndex++) {
const FileDesc &desc = _fileDescs[descIndex];
- if (desc.fullPath == convertedPath) {
+ if (desc.fullPath == filePath) {
if (substreamType == ArchiveMember::SubstreamType::kSubstreamTypeData && desc.uncompressedDataSize == 0)
return false;
if (substreamType == ArchiveMember::SubstreamType::kSubstreamTypeResource && desc.uncompressedResSize == 0)
diff --git a/common/formats/prodos.cpp b/common/formats/prodos.cpp
index 9739ecac21a..1fa5e498eb0 100644
--- a/common/formats/prodos.cpp
+++ b/common/formats/prodos.cpp
@@ -50,6 +50,14 @@ Common::String ProDOSFile::getName() const {
return Common::String(_name);
}
+Common::String ProDOSFile::getFileName() const {
+ return Common::String(_name);
+}
+
+Common::Path ProDOSFile::getPathInArchive() const {
+ return Common::Path(_name);
+}
+
/* This method is used to get a single block of data from the disk,
* but is not strictly 512 bytes. This is so that it can get only what
* it needs when in the final block. It then adds it into the allocated
diff --git a/common/formats/prodos.h b/common/formats/prodos.h
index 1dd6784b724..085e0ec2c91 100644
--- a/common/formats/prodos.h
+++ b/common/formats/prodos.h
@@ -87,6 +87,8 @@ public:
// -- These are the Common::ArchiveMember related functions --
Common::String getName() const override; // Returns _name
+ Common::Path getPathInArchive() const override; // Returns _name
+ Common::String getFileName() const override; // Returns _name
Common::SeekableReadStream *createReadStream() const override; // This is what the archive needs to create a file
void getDataBlock(byte *memOffset, int offset, int size) const; // Gets data up to the size of a single data block (512 bytes)
int parseIndexBlock(byte *memOffset, int blockNum, int cSize) const; // Uses getDataBlock() on every pointer in the index file, adding them to byte * memory block
diff --git a/common/fs.cpp b/common/fs.cpp
index e4c789bb4b2..7b24adac6f8 100644
--- a/common/fs.cpp
+++ b/common/fs.cpp
@@ -27,6 +27,46 @@
namespace Common {
+// File-in-directory archive member that captures relative path
+class FSDirectoryFile : public ArchiveMember {
+public:
+ FSDirectoryFile(const Common::Path &pathInDirectory, const FSNode &fsNode);
+
+ SeekableReadStream *createReadStream() const override;
+ String getName() const override;
+ Path getPathInArchive() const override;
+ String getFileName() const override;
+ U32String getDisplayName() const override;
+
+private:
+ Common::Path _pathInDirectory;
+ FSNode _fsNode;
+};
+
+FSDirectoryFile::FSDirectoryFile(const Common::Path &pathInDirectory, const FSNode &fsNode) : _pathInDirectory(pathInDirectory), _fsNode(fsNode) {
+}
+
+SeekableReadStream *FSDirectoryFile::createReadStream() const {
+ return _fsNode.createReadStream();
+}
+
+String FSDirectoryFile::getName() const {
+ return _fsNode.getName();
+}
+
+Path FSDirectoryFile::getPathInArchive() const {
+ return _pathInDirectory;
+}
+
+String FSDirectoryFile::getFileName() const {
+ return _fsNode.getName();
+}
+
+U32String FSDirectoryFile::getDisplayName() const {
+ return _fsNode.getDisplayName();
+}
+
+
FSNode::FSNode() {
}
@@ -97,6 +137,14 @@ String FSNode::getName() const {
return punycode_decodefilename(_realNode->getName());
}
+String FSNode::getFileName() const {
+ return getName();
+}
+
+Common::Path FSNode::getPathInArchive() const {
+ return getName();
+}
+
String FSNode::getRealName() const {
assert(_realNode);
return _realNode->getName();
@@ -245,7 +293,7 @@ const ArchiveMemberPtr FSDirectory::getMember(const Path &path) const {
return ArchiveMemberPtr();
}
- return ArchiveMemberPtr(new FSNode(*node));
+ return ArchiveMemberPtr(new FSDirectoryFile(path, *node));
}
SeekableReadStream *FSDirectory::createReadStreamForMember(const Path &path) const {
@@ -337,14 +385,14 @@ int FSDirectory::listMatchingMembers(ArchiveMemberList &list, const Path &patter
int matches = 0;
for (NodeCache::const_iterator it = _fileCache.begin(); it != _fileCache.end(); ++it) {
if (it->_key.matchPattern(pattern)) {
- list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
+ list.push_back(ArchiveMemberPtr(new FSDirectoryFile(it->_key, it->_value)));
matches++;
}
}
if (_includeDirectories) {
for (NodeCache::const_iterator it = _subDirCache.begin(); it != _subDirCache.end(); ++it) {
if (it->_key.matchPattern(pattern)) {
- list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
+ list.push_back(ArchiveMemberPtr(new FSDirectoryFile(it->_key, it->_value)));
matches++;
}
}
@@ -362,13 +410,13 @@ int FSDirectory::listMembers(ArchiveMemberList &list) const {
int files = 0;
for (NodeCache::const_iterator it = _fileCache.begin(); it != _fileCache.end(); ++it) {
- list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
+ list.push_back(ArchiveMemberPtr(new FSDirectoryFile(it->_key, it->_value)));
++files;
}
if (_includeDirectories) {
for (NodeCache::const_iterator it = _subDirCache.begin(); it != _subDirCache.end(); ++it) {
- list.push_back(ArchiveMemberPtr(new FSNode(it->_value)));
+ list.push_back(ArchiveMemberPtr(new FSDirectoryFile(it->_key, it->_value)));
++files;
}
}
diff --git a/common/fs.h b/common/fs.h
index a8faff095f0..8b4ffc8dbdb 100644
--- a/common/fs.h
+++ b/common/fs.h
@@ -156,7 +156,7 @@ public:
*
* @return The display name.
*/
- virtual U32String getDisplayName() const;
+ U32String getDisplayName() const override;
/**
* Return a string representation of the name of the file. This can be
@@ -166,7 +166,23 @@ public:
*
* @return The file name.
*/
- virtual String getName() const;
+ String getName() const override;
+
+ /**
+ * Return a string representation of the name of the file.
+ *
+ * @return The file name.
+ */
+ String getFileName() const override;
+
+ /**
+ * Return a string representation of the name of the file. Since FSNode
+ * parents are always the parent FSDirectory, this will not return a full
+ * path, only the file name.
+ *
+ * @return The file name.
+ */
+ Common::Path getPathInArchive() const override;
/**
* Return a string representation of the name of the file, without any
diff --git a/engines/director/game-quirks.cpp b/engines/director/game-quirks.cpp
index e1ed785266d..f54d69a72ca 100644
--- a/engines/director/game-quirks.cpp
+++ b/engines/director/game-quirks.cpp
@@ -264,7 +264,7 @@ int CachedArchive::listMembers(Common::ArchiveMemberList &list) const {
int count = 0;
for (FileMap::const_iterator i = _files.begin(); i != _files.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
++count;
}
@@ -276,7 +276,7 @@ const Common::ArchiveMemberPtr CachedArchive::getMember(const Common::Path &path
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *CachedArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 5489815544a..d040da44496 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -731,7 +731,7 @@ int ProjectorArchive::listMembers(Common::ArchiveMemberList &list) const {
int count = 0;
for (FileMap::const_iterator i = _files.begin(); i != _files.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
++count;
}
@@ -744,7 +744,7 @@ const Common::ArchiveMemberPtr ProjectorArchive::getMember(const Common::Path &p
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *ProjectorArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/dreamweb/rnca_archive.cpp b/engines/dreamweb/rnca_archive.cpp
index 30a737d121a..e8062644347 100644
--- a/engines/dreamweb/rnca_archive.cpp
+++ b/engines/dreamweb/rnca_archive.cpp
@@ -73,7 +73,7 @@ bool RNCAArchive::hasFile(const Common::Path &path) const {
int RNCAArchive::listMembers(Common::ArchiveMemberList &list) const {
for (FileMap::const_iterator i = _files.begin(), end = _files.end(); i != end; ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
}
return _files.size();
@@ -84,7 +84,7 @@ const Common::ArchiveMemberPtr RNCAArchive::getMember(const Common::Path &path)
if (!_files.contains(translated))
return nullptr;
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(_files.getVal(translated)._fileName, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(_files.getVal(translated)._fileName, *this));
}
Common::SharedArchiveContents RNCAArchive::readContentsForPath(const Common::String& translated) const {
diff --git a/engines/glk/blorb.cpp b/engines/glk/blorb.cpp
index bc0078d4e3f..6dad4516ccb 100644
--- a/engines/glk/blorb.cpp
+++ b/engines/glk/blorb.cpp
@@ -50,7 +50,7 @@ bool Blorb::hasFile(const Common::Path &path) const {
int Blorb::listMembers(Common::ArchiveMemberList &list) const {
for (uint idx = 0; idx < _chunks.size(); ++idx) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(_chunks[idx]._filename, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(_chunks[idx]._filename, *this)));
}
return (int)_chunks.size();
@@ -61,7 +61,7 @@ const Common::ArchiveMemberPtr Blorb::getMember(const Common::Path &path) const
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *Blorb::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/glk/comprehend/pics.cpp b/engines/glk/comprehend/pics.cpp
index 31385ad7d85..e0a5a74966d 100644
--- a/engines/glk/comprehend/pics.cpp
+++ b/engines/glk/comprehend/pics.cpp
@@ -387,7 +387,7 @@ const Common::ArchiveMemberPtr Pics::getMember(const Common::Path &path) const {
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *Pics::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/glk/hugo/resource_archive.cpp b/engines/glk/hugo/resource_archive.cpp
index 1526d1744cc..a6546a452fb 100644
--- a/engines/glk/hugo/resource_archive.cpp
+++ b/engines/glk/hugo/resource_archive.cpp
@@ -64,7 +64,7 @@ const Common::ArchiveMemberPtr ResourceArchive::getMember(const Common::Path &pa
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SeekableReadStream *ResourceArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/glk/zcode/pics.cpp b/engines/glk/zcode/pics.cpp
index fa559569060..438aa525e7c 100644
--- a/engines/glk/zcode/pics.cpp
+++ b/engines/glk/zcode/pics.cpp
@@ -124,7 +124,7 @@ bool Pics::hasFile(const Common::Path &path) const {
int Pics::listMembers(Common::ArchiveMemberList &list) const {
for (uint idx = 0; idx < _index.size(); ++idx) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(_index[idx]._filename, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(_index[idx]._filename, *this)));
}
return (int)_index.size();
@@ -135,7 +135,7 @@ const Common::ArchiveMemberPtr Pics::getMember(const Common::Path &path) const {
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *Pics::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/glk/zcode/sound_folder.cpp b/engines/glk/zcode/sound_folder.cpp
index 0a27ced8791..151cd0607d9 100644
--- a/engines/glk/zcode/sound_folder.cpp
+++ b/engines/glk/zcode/sound_folder.cpp
@@ -55,7 +55,7 @@ bool SoundSubfolder::hasFile(const Common::Path &path) const {
int SoundSubfolder::listMembers(Common::ArchiveMemberList &list) const {
int total = 0;
for (Common::StringMap::iterator i = _filenames.begin(); i != _filenames.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember((*i)._key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember((*i)._key, *this)));
++total;
}
@@ -67,7 +67,7 @@ const Common::ArchiveMemberPtr SoundSubfolder::getMember(const Common::Path &pat
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *SoundSubfolder::createReadStreamForMember(const Common::Path &path) const {
@@ -123,7 +123,7 @@ int SoundZip::listMembers(Common::ArchiveMemberList &list) const {
int total = 0;
for (Common::StringMap::iterator i = _filenames.begin(); i != _filenames.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember((*i)._key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember((*i)._key, *this)));
++total;
}
@@ -135,7 +135,7 @@ const Common::ArchiveMemberPtr SoundZip::getMember(const Common::Path &path) con
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
diff --git a/engines/grim/lab.h b/engines/grim/lab.h
index 87641abf7b7..6573ff43c03 100644
--- a/engines/grim/lab.h
+++ b/engines/grim/lab.h
@@ -39,6 +39,8 @@ class LabEntry : public Common::ArchiveMember {
public:
LabEntry(const Common::String &name, uint32 offset, uint32 len, Lab *parent);
Common::String getName() const override { return _name; }
+ Common::String getFileName() const override { return _name; }
+ Common::Path getPathInArchive() const override { return _name; }
Common::SeekableReadStream *createReadStream() const override;
friend class Lab;
};
diff --git a/engines/grim/update/lang_filter.cpp b/engines/grim/update/lang_filter.cpp
index 7985790a920..c02cc3973d3 100644
--- a/engines/grim/update/lang_filter.cpp
+++ b/engines/grim/update/lang_filter.cpp
@@ -110,8 +110,7 @@ int LangFilter::listMembers(Common::ArchiveMemberList &list) const {
}
const Common::ArchiveMemberPtr LangFilter::getMember(const Common::Path &path) const {
- Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SeekableReadStream *LangFilter::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/grim/update/mscab.cpp b/engines/grim/update/mscab.cpp
index 032283a2b43..3c0997e946e 100644
--- a/engines/grim/update/mscab.cpp
+++ b/engines/grim/update/mscab.cpp
@@ -159,7 +159,7 @@ int MsCabinet::listMembers(Common::ArchiveMemberList &list) const {
const Common::ArchiveMemberPtr MsCabinet::getMember(const Common::Path &path) const {
Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *MsCabinet::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/hypno/libfile.cpp b/engines/hypno/libfile.cpp
index dd008f0eccb..5e1e7f104ed 100644
--- a/engines/hypno/libfile.cpp
+++ b/engines/hypno/libfile.cpp
@@ -110,7 +110,7 @@ int LibFile::listMembers(Common::ArchiveMemberList &list) const {
const Common::ArchiveMemberPtr LibFile::getMember(const Common::Path &path) const {
Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *LibFile::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/kyra/resource/resource_intern.cpp b/engines/kyra/resource/resource_intern.cpp
index 68102f4f2d8..e69722b2add 100644
--- a/engines/kyra/resource/resource_intern.cpp
+++ b/engines/kyra/resource/resource_intern.cpp
@@ -47,7 +47,7 @@ int PlainArchive::listMembers(Common::ArchiveMemberList &list) const {
int count = 0;
for (FileMap::const_iterator i = _files.begin(); i != _files.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
++count;
}
@@ -59,7 +59,7 @@ const Common::ArchiveMemberPtr PlainArchive::getMember(const Common::Path &path)
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *PlainArchive::createReadStreamForMember(const Common::Path &path) const {
@@ -106,7 +106,7 @@ int TlkArchive::listMembers(Common::ArchiveMemberList &list) const {
for (; count < _entryCount; ++count) {
const Common::String name = Common::String::format("%08u.AUD", _fileEntries[count * 2 + 0]);
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(name, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(name, *this)));
}
return count;
@@ -117,7 +117,7 @@ const Common::ArchiveMemberPtr TlkArchive::getMember(const Common::Path &path) c
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *TlkArchive::createReadStreamForMember(const Common::Path &path) const {
@@ -202,7 +202,7 @@ int CachedArchive::listMembers(Common::ArchiveMemberList &list) const {
int count = 0;
for (FileMap::const_iterator i = _files.begin(); i != _files.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
++count;
}
@@ -214,7 +214,7 @@ const Common::ArchiveMemberPtr CachedArchive::getMember(const Common::Path &path
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *CachedArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/lastexpress/data/archive.cpp b/engines/lastexpress/data/archive.cpp
index d16da1896cc..fd93ac7c178 100644
--- a/engines/lastexpress/data/archive.cpp
+++ b/engines/lastexpress/data/archive.cpp
@@ -82,7 +82,7 @@ int HPFArchive::listMembers(Common::ArchiveMemberList &list) const {
int numMembers = 0;
for (FileMap::const_iterator i = _files.begin(); i != _files.end(); ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
numMembers++;
}
@@ -94,7 +94,7 @@ const Common::ArchiveMemberPtr HPFArchive::getMember(const Common::Path &path) c
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *HPFArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/lastexpress/resource.cpp b/engines/lastexpress/resource.cpp
index a835daffa47..31624ee590a 100644
--- a/engines/lastexpress/resource.cpp
+++ b/engines/lastexpress/resource.cpp
@@ -176,7 +176,7 @@ const Common::ArchiveMemberPtr ResourceManager::getMember(const Common::Path &pa
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *ResourceManager::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/mads/mps_installer.cpp b/engines/mads/mps_installer.cpp
index 37261ce0f15..06d52e1bbf0 100644
--- a/engines/mads/mps_installer.cpp
+++ b/engines/mads/mps_installer.cpp
@@ -69,7 +69,7 @@ bool MpsInstaller::hasFile(const Common::Path &path) const {
int MpsInstaller::listMembers(Common::ArchiveMemberList &list) const {
for (FileMap::const_iterator i = _files.begin(), end = _files.end(); i != end; ++i) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(i->_key, *this)));
}
return _files.size();
@@ -80,7 +80,7 @@ const Common::ArchiveMemberPtr MpsInstaller::getMember(const Common::Path &path)
if (!_files.contains(translated))
return nullptr;
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(_files.getVal(translated)._fileName, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(_files.getVal(translated)._fileName, *this));
}
Common::SharedArchiveContents MpsInstaller::readContentsForPath(const Common::String& translated) const {
diff --git a/engines/mads/resources.cpp b/engines/mads/resources.cpp
index a5f1298bd0b..f5debd0a670 100644
--- a/engines/mads/resources.cpp
+++ b/engines/mads/resources.cpp
@@ -114,7 +114,7 @@ int HagArchive::listMembers(Common::ArchiveMemberList &list) const {
for (i = hagIndex._entries.begin(); i != hagIndex._entries.end(); ++i) {
list.push_back(Common::ArchiveMemberList::value_type(
- new Common::GenericArchiveMember((*i)._resourceName, this)));
+ new Common::GenericArchiveMember((*i)._resourceName, *this)));
++members;
}
}
@@ -127,7 +127,7 @@ const Common::ArchiveMemberPtr HagArchive::getMember(const Common::Path &path) c
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *HagArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/mm/shared/utils/engine_data.cpp b/engines/mm/shared/utils/engine_data.cpp
index dae0ba11621..b37230e81ff 100644
--- a/engines/mm/shared/utils/engine_data.cpp
+++ b/engines/mm/shared/utils/engine_data.cpp
@@ -53,6 +53,8 @@ public:
Common::U32String getDisplayName() const override {
return _member->getDisplayName();
}
+ Common::String getFileName() const override { return getName(); }
+ Common::Path getPathInArchive() const override { return getName(); }
};
/**
@@ -197,7 +199,7 @@ const Common::ArchiveMemberPtr DataArchive::getMember(const Common::Path &path)
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SeekableReadStream *DataArchive::createReadStreamForMember(const Common::Path &path) const {
@@ -219,7 +221,7 @@ const Common::ArchiveMemberPtr DataArchiveProxy::getMember(const Common::Path &p
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SeekableReadStream *DataArchiveProxy::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/mm/shared/xeen/cc_archive.cpp b/engines/mm/shared/xeen/cc_archive.cpp
index 3cbad2a9e5d..ac136c7b82e 100644
--- a/engines/mm/shared/xeen/cc_archive.cpp
+++ b/engines/mm/shared/xeen/cc_archive.cpp
@@ -146,7 +146,7 @@ const Common::ArchiveMemberPtr BaseCCArchive::getMember(const Common::Path &path
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(Common::String(name), *this));
}
int BaseCCArchive::listMembers(Common::ArchiveMemberList &list) const {
diff --git a/engines/mohawk/installer_archive.cpp b/engines/mohawk/installer_archive.cpp
index 4920e53f028..a25dac1a166 100644
--- a/engines/mohawk/installer_archive.cpp
+++ b/engines/mohawk/installer_archive.cpp
@@ -120,7 +120,7 @@ int InstallerArchive::listMembers(Common::ArchiveMemberList &list) const {
const Common::ArchiveMemberPtr InstallerArchive::getMember(const Common::Path &path) const {
Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *InstallerArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/ngi/ngiarchive.cpp b/engines/ngi/ngiarchive.cpp
index 0d26193f56f..1d40b125a28 100644
--- a/engines/ngi/ngiarchive.cpp
+++ b/engines/ngi/ngiarchive.cpp
@@ -109,7 +109,7 @@ int NGIArchive::listMembers(Common::ArchiveMemberList &list) const {
NgiHeadersMap::const_iterator it = _headers.begin();
for ( ; it != _headers.end(); ++it) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(it->_value->filename, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(Common::Path(it->_value->filename), *this)));
matches++;
}
@@ -121,7 +121,7 @@ const Common::ArchiveMemberPtr NGIArchive::getMember(const Common::Path &path) c
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *NGIArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/parallaction/disk_ns.cpp b/engines/parallaction/disk_ns.cpp
index c5dd0077ca0..57919e1ebc5 100644
--- a/engines/parallaction/disk_ns.cpp
+++ b/engines/parallaction/disk_ns.cpp
@@ -149,7 +149,7 @@ bool NSArchive::hasFile(const Common::Path &path) const {
int NSArchive::listMembers(Common::ArchiveMemberList &list) const {
for (uint32 i = 0; i < _numFiles; i++) {
- list.push_back(Common::SharedPtr<Common::GenericArchiveMember>(new Common::GenericArchiveMember(_archiveDir[i], this)));
+ list.push_back(Common::SharedPtr<Common::GenericArchiveMember>(new Common::GenericArchiveMember(Common::String(_archiveDir[i]), *this)));
}
return _numFiles;
}
@@ -163,7 +163,7 @@ const Common::ArchiveMemberPtr NSArchive::getMember(const Common::Path &path) co
item = _archiveDir[index];
}
- return Common::SharedPtr<Common::GenericArchiveMember>(new Common::GenericArchiveMember(item, this));
+ return Common::SharedPtr<Common::GenericArchiveMember>(new Common::GenericArchiveMember(Common::String(item), *this));
}
diff --git a/engines/prince/archive.cpp b/engines/prince/archive.cpp
index 76d9f127cce..91a48b891fc 100644
--- a/engines/prince/archive.cpp
+++ b/engines/prince/archive.cpp
@@ -139,7 +139,7 @@ int PtcArchive::listMembers(Common::ArchiveMemberList &list) const {
int matches = 0;
for (FileMap::const_iterator it = _items.begin(); it != _items.end(); ++it) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(it->_key, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(it->_key, *this)));
matches++;
}
@@ -151,7 +151,7 @@ const Common::ArchiveMemberPtr PtcArchive::getMember(const Common::Path &path) c
if (!_items.contains(name)) {
Common::ArchiveMemberPtr();
}
- return Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *PtcArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/stark/formats/xarc.cpp b/engines/stark/formats/xarc.cpp
index ff69b2caa03..be96aa84767 100644
--- a/engines/stark/formats/xarc.cpp
+++ b/engines/stark/formats/xarc.cpp
@@ -40,6 +40,8 @@ public:
Common::SeekableReadStream *createReadStream() const override;
Common::String getName() const override { return _name; }
+ Common::Path getPathInArchive() const { return _name; }
+ Common::String getFileName() const { return _name; }
uint32 getLength() const { return _length; }
uint32 getOffset() const { return _offset; }
diff --git a/engines/sword25/package/packagemanager.cpp b/engines/sword25/package/packagemanager.cpp
index ff7eb7ba9c5..ddf6c3ba211 100644
--- a/engines/sword25/package/packagemanager.cpp
+++ b/engines/sword25/package/packagemanager.cpp
@@ -308,7 +308,7 @@ int PackageManager::doSearch(Common::ArchiveMemberList &list, const Common::Stri
}
if (!found) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(name, (*i)->archive)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(name, *(*i)->archive)));
debug(9, "> %s", name.c_str());
}
num++;
diff --git a/engines/trecision/fastfile.cpp b/engines/trecision/fastfile.cpp
index 3826128703d..f7d7e93a8da 100644
--- a/engines/trecision/fastfile.cpp
+++ b/engines/trecision/fastfile.cpp
@@ -88,8 +88,7 @@ int FastFile::listMembers(Common::ArchiveMemberList &list) const {
}
const Common::ArchiveMemberPtr FastFile::getMember(const Common::Path &path) const {
- Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(path, *this));
}
Common::SeekableReadStream *FastFile::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/ultima/shared/engine/data_archive.cpp b/engines/ultima/shared/engine/data_archive.cpp
index e5192b99470..6cbcfb04634 100644
--- a/engines/ultima/shared/engine/data_archive.cpp
+++ b/engines/ultima/shared/engine/data_archive.cpp
@@ -52,6 +52,9 @@ public:
Common::U32String getDisplayName() const override {
return _member->getDisplayName();
}
+
+ Common::String getFileName() const override { return getName(); }
+ Common::Path getPathInArchive() const override { return getName(); }
};
/*-------------------------------------------------------------------*/
@@ -164,7 +167,7 @@ const Common::ArchiveMemberPtr UltimaDataArchive::getMember(const Common::Path &
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *UltimaDataArchive::createReadStreamForMember(const Common::Path &path) const {
@@ -186,7 +189,7 @@ const Common::ArchiveMemberPtr UltimaDataArchiveProxy::getMember(const Common::P
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *UltimaDataArchiveProxy::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/ultima/shared/engine/resources.cpp b/engines/ultima/shared/engine/resources.cpp
index 0cc1fc03b1a..e36c5c616cc 100644
--- a/engines/ultima/shared/engine/resources.cpp
+++ b/engines/ultima/shared/engine/resources.cpp
@@ -65,7 +65,7 @@ bool Resources::hasFile(const Common::Path &path) const {
int Resources::listMembers(Common::ArchiveMemberList &list) const {
for (uint idx = 0; idx < _localResources.size(); ++idx) {
- list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(_localResources[idx]._name, this)));
+ list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(_localResources[idx]._name, *this)));
}
return _localResources.size();
@@ -76,7 +76,7 @@ const Common::ArchiveMemberPtr Resources::getMember(const Common::Path &path) co
if (!hasFile(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *Resources::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/ultima/ultima8/filesys/savegame.cpp b/engines/ultima/ultima8/filesys/savegame.cpp
index 7d4603cbd9d..4434182b1ee 100644
--- a/engines/ultima/ultima8/filesys/savegame.cpp
+++ b/engines/ultima/ultima8/filesys/savegame.cpp
@@ -80,7 +80,7 @@ bool FileEntryArchive::hasFile(const Common::Path &path) const {
int FileEntryArchive::listMembers(Common::ArchiveMemberList &list) const {
list.clear();
for (Common::HashMap<Common::String, FileEntry>::const_iterator it = _index.begin(); it != _index.end(); ++it)
- list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(it->_key, this)));
+ list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(it->_key, *this)));
return list.size();
}
@@ -90,7 +90,7 @@ const Common::ArchiveMemberPtr FileEntryArchive::getMember(const Common::Path &p
return nullptr;
Common::String name = path.toString();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *FileEntryArchive::createReadStreamForMember(const Common::Path &path) const {
diff --git a/engines/wintermute/base/file/base_file_entry.h b/engines/wintermute/base/file/base_file_entry.h
index a493ca3c5f3..f7e3d66b7df 100644
--- a/engines/wintermute/base/file/base_file_entry.h
+++ b/engines/wintermute/base/file/base_file_entry.h
@@ -40,6 +40,8 @@ class BaseFileEntry : public Common::ArchiveMember {
public:
Common::SeekableReadStream *createReadStream() const override;
Common::String getName() const override { return _filename; }
+ Common::Path getPathInArchive() const override { return _filename; }
+ Common::String getFileName() const override { return _filename; }
uint32 _timeDate2;
uint32 _timeDate1;
uint32 _flags;
diff --git a/engines/zvision/file/zfs_archive.cpp b/engines/zvision/file/zfs_archive.cpp
index 45f66f0701a..7754f4e86c8 100644
--- a/engines/zvision/file/zfs_archive.cpp
+++ b/engines/zvision/file/zfs_archive.cpp
@@ -112,7 +112,7 @@ int ZfsArchive::listMembers(Common::ArchiveMemberList &list) const {
int matches = 0;
for (ZfsEntryHeaderMap::const_iterator it = _entryHeaders.begin(); it != _entryHeaders.end(); ++it) {
- list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(it->_value->name, this)));
+ list.push_back(Common::ArchiveMemberList::value_type(new Common::GenericArchiveMember(it->_value->name, *this)));
matches++;
}
@@ -124,7 +124,7 @@ const Common::ArchiveMemberPtr ZfsArchive::getMember(const Common::Path &path) c
if (!_entryHeaders.contains(name))
return Common::ArchiveMemberPtr();
- return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, this));
+ return Common::ArchiveMemberPtr(new Common::GenericArchiveMember(name, *this));
}
Common::SeekableReadStream *ZfsArchive::createReadStreamForMember(const Common::Path &path) const {
Commit: f38b73201296942e9c82db35a5b5a18ec00ddf8c
https://github.com/scummvm/scummvm/commit/f38b73201296942e9c82db35a5b5a18ec00ddf8c
Author: elasota (ejlasota at gmail.com)
Date: 2023-07-19T18:51:37+02:00
Commit Message:
COMMON: Fix override without "override" qualifier warning
Changed paths:
common/fs.h
diff --git a/common/fs.h b/common/fs.h
index 8b4ffc8dbdb..eb3e4ba03ee 100644
--- a/common/fs.h
+++ b/common/fs.h
@@ -258,7 +258,7 @@ public:
*
* @return Pointer to the stream object, 0 in case of a failure.
*/
- virtual SeekableReadStream *createReadStream() const;
+ SeekableReadStream *createReadStream() const override;
/**
* Create a WriteStream instance corresponding to the file
More information about the Scummvm-git-logs
mailing list