From 410923351b5c08395828ef42ebf1a74dd891e727 Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Sat, 14 Sep 2019 22:50:34 +0100 Subject: Revert "COMMON: Implement FSNode::createDirectoryRecursive()" This reverts commit aca627bec7b407790d78a64df984344ff454c15b. --- common/file.cpp | 20 +++++++++++++++++--- common/fs.cpp | 21 --------------------- common/fs.h | 8 -------- 3 files changed, 17 insertions(+), 32 deletions(-) (limited to 'common') 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; }; /** -- cgit v1.2.3