diff options
author | Cameron Cawley | 2019-09-14 22:50:34 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-15 00:07:46 +0200 |
commit | 410923351b5c08395828ef42ebf1a74dd891e727 (patch) | |
tree | 171090d22dbb0e5aca9419459db5f735d67abdf0 /common | |
parent | e7d331fe9401590e0782080a13dc4d3a741bde99 (diff) | |
download | scummvm-rg350-410923351b5c08395828ef42ebf1a74dd891e727.tar.gz scummvm-rg350-410923351b5c08395828ef42ebf1a74dd891e727.tar.bz2 scummvm-rg350-410923351b5c08395828ef42ebf1a74dd891e727.zip |
Revert "COMMON: Implement FSNode::createDirectoryRecursive()"
This reverts commit aca627bec7b407790d78a64df984344ff454c15b.
Diffstat (limited to 'common')
-rw-r--r-- | common/file.cpp | 20 | ||||
-rw-r--r-- | common/fs.cpp | 21 | ||||
-rw-r--r-- | common/fs.h | 8 |
3 files changed, 17 insertions, 32 deletions
diff --git a/common/file.cpp b/common/file.cpp index 12461b7382..6228c6640b 100644 --- a/common/file.cpp +++ b/common/file.cpp @@ -155,10 +155,24 @@ bool DumpFile::open(const String &filename, bool createPath) { assert(!filename.empty()); assert(!_handle); - FSNode node(filename); - if (createPath) - node.getParent().createDirectoryRecursive(); + if (createPath) { + for (uint32 i = 0; i < filename.size(); ++i) { + if (filename[i] == '/' || filename[i] == '\\') { + Common::String subpath = filename; + subpath.erase(i); + if (subpath.empty()) continue; + AbstractFSNode *node = g_system->getFilesystemFactory()->makeFileNodePath(subpath); + if (node->exists()) { + delete node; + continue; + } + if (!node->createDirectory()) warning("DumpFile: unable to create directories from path prefix"); + delete node; + } + } + } + FSNode node(filename); return open(node); } diff --git a/common/fs.cpp b/common/fs.cpp index 2ba64099b4..d27de48370 100644 --- a/common/fs.cpp +++ b/common/fs.cpp @@ -168,27 +168,6 @@ bool FSNode::createDirectory() const { return _realNode->createDirectory(); } -bool FSNode::createDirectoryRecursive() const { - if (_realNode == nullptr) - return false; - - if (_realNode->exists()) { - if (!_realNode->isDirectory()) { - warning("FSNode::createDirectoryRecursive: '%s' is a file", _realNode->getName().c_str()); - return false; - } else { - return true; - } - } - - FSNode parent = getParent(); - assert(parent.getPath() != _realNode->getPath()); - if (!parent.createDirectoryRecursive()) - return false; - - return _realNode->createDirectory(); -} - FSDirectory::FSDirectory(const FSNode &node, int depth, bool flat) : _node(node), _cached(false), _depth(depth), _flat(flat) { } diff --git a/common/fs.h b/common/fs.h index e8c23f8486..7041428fc8 100644 --- a/common/fs.h +++ b/common/fs.h @@ -239,14 +239,6 @@ public: * @return true if the directory was created, false otherwise. */ bool createDirectory() const; - - /** - * Creates a directory referred by this node. The parent directory - * will also be created if it doesn't exist. - * - * @return true if the directory was created, false otherwise. - */ - bool createDirectoryRecursive() const; }; /** |