aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorCameron Cawley2019-09-14 22:50:34 +0100
committerEugene Sandulenko2019-09-15 00:07:46 +0200
commit410923351b5c08395828ef42ebf1a74dd891e727 (patch)
tree171090d22dbb0e5aca9419459db5f735d67abdf0 /common
parente7d331fe9401590e0782080a13dc4d3a741bde99 (diff)
downloadscummvm-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.cpp20
-rw-r--r--common/fs.cpp21
-rw-r--r--common/fs.h8
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;
};
/**