[Scummvm-git-logs] scummvm master -> db445bfc87600d0f87bdeeb8b3bf40a3a935f097

bluegr bluegr at gmail.com
Tue Aug 6 06:17:34 CEST 2019


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:
66ef50cfeb BACKENDS: Rename and simplify AbstractFSNode::create()
db445bfc87 BACKENDS: Improve AbstractFSNode::createDirectory() stubs


Commit: 66ef50cfebbcd650a6b57d896a9ba057a23cea35
    https://github.com/scummvm/scummvm/commit/66ef50cfebbcd650a6b57d896a9ba057a23cea35
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2019-08-06T07:17:29+03:00

Commit Message:
BACKENDS: Rename and simplify AbstractFSNode::create()

Changed paths:
    backends/fs/abstract-fs.h
    backends/fs/amigaos4/amigaos4-fs.cpp
    backends/fs/amigaos4/amigaos4-fs.h
    backends/fs/chroot/chroot-fs.cpp
    backends/fs/chroot/chroot-fs.h
    backends/fs/ds/ds-fs.cpp
    backends/fs/ds/ds-fs.h
    backends/fs/n64/n64-fs.cpp
    backends/fs/n64/n64-fs.h
    backends/fs/posix/posix-fs.cpp
    backends/fs/posix/posix-fs.h
    backends/fs/ps2/ps2-fs.cpp
    backends/fs/ps2/ps2-fs.h
    backends/fs/psp/psp-fs.cpp
    backends/fs/psp/psp-fs.h
    backends/fs/riscos/riscos-fs.cpp
    backends/fs/riscos/riscos-fs.h
    backends/fs/symbian/symbian-fs.cpp
    backends/fs/symbian/symbian-fs.h
    backends/fs/wii/wii-fs.cpp
    backends/fs/wii/wii-fs.h
    backends/fs/windows/windows-fs.cpp
    backends/fs/windows/windows-fs.h
    backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
    backends/platform/dc/dc-fs.cpp
    common/file.cpp


diff --git a/backends/fs/abstract-fs.h b/backends/fs/abstract-fs.h
index 28ea3bb..8b2c1c1 100644
--- a/backends/fs/abstract-fs.h
+++ b/backends/fs/abstract-fs.h
@@ -193,13 +193,11 @@ public:
 	virtual Common::WriteStream *createWriteStream() = 0;
 
 	/**
-	* Creates a file referred by this node.
+	* Creates a directory referred by this node.
 	*
-	* @param isDirectoryFlag true if created file must be a directory
-	*
-	* @return true if file is created successfully
+	* @return true if the directory is created successfully
 	*/
-	virtual bool create(bool isDirectoryFlag) = 0;
+	virtual bool createDirectory() = 0;
 };
 
 
diff --git a/backends/fs/amigaos4/amigaos4-fs.cpp b/backends/fs/amigaos4/amigaos4-fs.cpp
index 134193a..fa0ea14 100644
--- a/backends/fs/amigaos4/amigaos4-fs.cpp
+++ b/backends/fs/amigaos4/amigaos4-fs.cpp
@@ -443,7 +443,7 @@ Common::WriteStream *AmigaOSFilesystemNode::createWriteStream() {
 	return StdioStream::makeFromPath(getPath(), true);
 }
 
-bool AmigaOSFilesystemNode::create(bool isDirectoryFlag) {
+bool AmigaOSFilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/amigaos4/amigaos4-fs.h b/backends/fs/amigaos4/amigaos4-fs.h
index c86bb4c..75d8d01 100644
--- a/backends/fs/amigaos4/amigaos4-fs.h
+++ b/backends/fs/amigaos4/amigaos4-fs.h
@@ -116,7 +116,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 };
 
 
diff --git a/backends/fs/chroot/chroot-fs.cpp b/backends/fs/chroot/chroot-fs.cpp
index 3bbee27..0fdd14c 100644
--- a/backends/fs/chroot/chroot-fs.cpp
+++ b/backends/fs/chroot/chroot-fs.cpp
@@ -100,7 +100,7 @@ Common::WriteStream *ChRootFilesystemNode::createWriteStream() {
 	return _realNode->createWriteStream();
 }
 
-bool ChRootFilesystemNode::create(bool isDirectoryFlag) {
+bool ChRootFilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/chroot/chroot-fs.h b/backends/fs/chroot/chroot-fs.h
index 76902bc..66cbcbe 100644
--- a/backends/fs/chroot/chroot-fs.h
+++ b/backends/fs/chroot/chroot-fs.h
@@ -49,7 +49,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 
 private:
 	static Common::String addPathComponent(const Common::String &path, const Common::String &component);
diff --git a/backends/fs/ds/ds-fs.cpp b/backends/fs/ds/ds-fs.cpp
index 8c51f10..8498a77 100644
--- a/backends/fs/ds/ds-fs.cpp
+++ b/backends/fs/ds/ds-fs.cpp
@@ -211,7 +211,7 @@ Common::WriteStream *DSFileSystemNode::createWriteStream() {
 	return Common::wrapBufferedWriteStream(stream, WRITE_BUFFER_SIZE);
 }
 
-bool DSFileSystemNode::create(bool isDirectoryFlag) {
+bool DSFileSystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
@@ -398,7 +398,7 @@ Common::WriteStream *GBAMPFileSystemNode::createWriteStream() {
 	return Common::wrapBufferedWriteStream(stream, WRITE_BUFFER_SIZE);
 }
 
-bool GBAMPFileSystemNode::create(bool isDirectoryFlag) {
+bool GBAMPFileSystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/ds/ds-fs.h b/backends/fs/ds/ds-fs.h
index 12dd6d6..3770847 100644
--- a/backends/fs/ds/ds-fs.h
+++ b/backends/fs/ds/ds-fs.h
@@ -91,7 +91,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 
 	/**
 	 * Returns the zip file this node points to.
@@ -157,7 +157,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 };
 
 struct fileHandle {
diff --git a/backends/fs/n64/n64-fs.cpp b/backends/fs/n64/n64-fs.cpp
index 5a131c0..4a21fb2 100644
--- a/backends/fs/n64/n64-fs.cpp
+++ b/backends/fs/n64/n64-fs.cpp
@@ -160,7 +160,7 @@ Common::WriteStream *N64FilesystemNode::createWriteStream() {
 	return RomfsStream::makeFromPath(getPath(), true);
 }
 
-bool N64FilesystemNode::create(bool isDirectoryFlag) {
+bool N64FilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/n64/n64-fs.h b/backends/fs/n64/n64-fs.h
index b2de8a4..495fd67 100644
--- a/backends/fs/n64/n64-fs.h
+++ b/backends/fs/n64/n64-fs.h
@@ -73,7 +73,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 };
 
 #endif
diff --git a/backends/fs/posix/posix-fs.cpp b/backends/fs/posix/posix-fs.cpp
index 5b724c2..507f075 100644
--- a/backends/fs/posix/posix-fs.cpp
+++ b/backends/fs/posix/posix-fs.cpp
@@ -299,33 +299,11 @@ Common::WriteStream *POSIXFilesystemNode::createWriteStream() {
 	return StdioStream::makeFromPath(getPath(), true);
 }
 
-bool POSIXFilesystemNode::create(bool isDirectoryFlag) {
-	bool success;
-
-	if (isDirectoryFlag) {
-		success = mkdir(_path.c_str(), 0755) == 0;
-	} else {
-		int fd = open(_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0755);
-		success = fd >= 0;
-
-		if (fd >= 0) {
-			close(fd);
-		}
-	}
-
-	if (success) {
+bool POSIXFilesystemNode::createDirectory() {
+	if (mkdir(_path.c_str(), 0755) == 0)
 		setFlags();
-		if (_isValid) {
-			if (_isDirectory != isDirectoryFlag) warning("failed to create %s: got %s", isDirectoryFlag ? "directory" : "file", _isDirectory ? "directory" : "file");
-			return _isDirectory == isDirectoryFlag;
-		}
-
-		warning("POSIXFilesystemNode: %s() was a success, but stat indicates there is no such %s",
-			isDirectoryFlag ? "mkdir" : "creat", isDirectoryFlag ? "directory" : "file");
-		return false;
-	}
 
-	return false;
+	return _isValid && _isDirectory;
 }
 
 namespace Posix {
diff --git a/backends/fs/posix/posix-fs.h b/backends/fs/posix/posix-fs.h
index 5ad26ff..9751ab7 100644
--- a/backends/fs/posix/posix-fs.h
+++ b/backends/fs/posix/posix-fs.h
@@ -68,7 +68,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 
 private:
 	/**
diff --git a/backends/fs/ps2/ps2-fs.cpp b/backends/fs/ps2/ps2-fs.cpp
index b6f184f..ec75f1e 100644
--- a/backends/fs/ps2/ps2-fs.cpp
+++ b/backends/fs/ps2/ps2-fs.cpp
@@ -443,7 +443,7 @@ Common::WriteStream *Ps2FilesystemNode::createWriteStream() {
 	return PS2FileStream::makeFromPath(getPath(), true);
 }
 
-bool Ps2FilesystemNode::create(bool isDirectoryFlag) {
+bool Ps2FilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/ps2/ps2-fs.h b/backends/fs/ps2/ps2-fs.h
index ca476ec..16463fd 100644
--- a/backends/fs/ps2/ps2-fs.h
+++ b/backends/fs/ps2/ps2-fs.h
@@ -96,7 +96,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 
 	int getDev() { return 0; }
 };
diff --git a/backends/fs/psp/psp-fs.cpp b/backends/fs/psp/psp-fs.cpp
index c69592e..01884de 100644
--- a/backends/fs/psp/psp-fs.cpp
+++ b/backends/fs/psp/psp-fs.cpp
@@ -239,7 +239,7 @@ Common::WriteStream *PSPFilesystemNode::createWriteStream() {
 	return Common::wrapBufferedWriteStream(stream, WRITE_BUFFER_SIZE);
 }
 
-bool PSPFilesystemNode::create(bool isDirectoryFlag) {
+bool PSPFilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/psp/psp-fs.h b/backends/fs/psp/psp-fs.h
index 47c6d04..3d70fac 100644
--- a/backends/fs/psp/psp-fs.h
+++ b/backends/fs/psp/psp-fs.h
@@ -65,7 +65,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 };
 
 #endif
diff --git a/backends/fs/riscos/riscos-fs.cpp b/backends/fs/riscos/riscos-fs.cpp
index 6f19569..810be2b 100644
--- a/backends/fs/riscos/riscos-fs.cpp
+++ b/backends/fs/riscos/riscos-fs.cpp
@@ -52,23 +52,27 @@ bool RISCOSFilesystemNode::isWritable() const {
 	return access(_path.c_str(), W_OK) == 0;
 }
 
+void RISCOSFilesystemNode::setFlags() {
+	int type = _swi(OS_File, _INR(0,1)|_RETURN(0), 20, RISCOS_Utils::toRISCOS(_path).c_str());
+	if (type == 0) {
+		_isDirectory = false;
+		_isValid = false;
+	} else if (type == 2) {
+		_isDirectory = true;
+		_isValid = true;
+	} else {
+		_isDirectory = false;
+		_isValid = true;
+	}
+}
+
 RISCOSFilesystemNode::RISCOSFilesystemNode(const Common::String &p) {
 	_path = p;
 	if (p == "/") {
 		_isDirectory = true;
 		_isValid = true;
 	} else {
-		int type = _swi(OS_File, _INR(0,1)|_RETURN(0), 20, RISCOS_Utils::toRISCOS(_path).c_str());
-		if (type == 0) {
-			_isDirectory = false;
-			_isValid = false;
-		} else if (type == 2) {
-			_isDirectory = true;
-			_isValid = true;
-		} else {
-			_isDirectory = false;
-			_isValid = true;
-		}
+		setFlags();
 	}
 }
 
@@ -198,33 +202,11 @@ Common::WriteStream *RISCOSFilesystemNode::createWriteStream() {
 	return StdioStream::makeFromPath(getPath(), true);
 }
 
-bool RISCOSFilesystemNode::create(bool isDirectoryFlag) {
-	bool success;
-
-	if (isDirectoryFlag) {
-		success = _swix(OS_File, _INR(0,1), 8, RISCOS_Utils::toRISCOS(_path).c_str()) == NULL;
-	} else {
-		int fd = open(_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0755);
-		success = fd >= 0;
-
-		if (fd >= 0) {
-			close(fd);
-		}
-	}
-
-	if (success) {
-		if (exists()) {
-			_isDirectory = _swi(OS_File, _INR(0,1)|_RETURN(0), 20, RISCOS_Utils::toRISCOS(_path).c_str()) == 2;
-			if (_isDirectory != isDirectoryFlag) warning("failed to create %s: got %s", isDirectoryFlag ? "directory" : "file", _isDirectory ? "directory" : "file");
-			return _isDirectory == isDirectoryFlag;
-		}
-
-		warning("RISCOSFilesystemNode: Attempting to create a %s was a success, but access indicates there is no such %s",
-			isDirectoryFlag ? "directory" : "file", isDirectoryFlag ? "directory" : "file");
-		return false;
-	}
+bool RISCOSFilesystemNode::createDirectory() {
+	if (_swix(OS_File, _INR(0,1), 8, RISCOS_Utils::toRISCOS(_path).c_str()) == NULL)
+		setFlags();
 
-	return false;
+	return _isValid && _isDirectory;
 }
 
 namespace Riscos {
@@ -270,7 +252,7 @@ bool assureDirectoryExists(const Common::String &dir, const char *prefix) {
 		}
 
 		node = new RISCOSFilesystemNode(path);
-		if (!node->create(true)) {
+		if (!node->createDirectory()) {
 			if (node->exists()) {
 				if (!node->isDirectory()) {
 					return false;
diff --git a/backends/fs/riscos/riscos-fs.h b/backends/fs/riscos/riscos-fs.h
index 99fa1d5..f068022 100644
--- a/backends/fs/riscos/riscos-fs.h
+++ b/backends/fs/riscos/riscos-fs.h
@@ -67,7 +67,12 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
+private:
+	/**
+	 * Tests and sets the _isValid and _isDirectory flags, using OS_File 20.
+	 */
+	virtual void setFlags();
 };
 
 namespace Riscos {
diff --git a/backends/fs/symbian/symbian-fs.cpp b/backends/fs/symbian/symbian-fs.cpp
index c6d5cc4..7759f32 100644
--- a/backends/fs/symbian/symbian-fs.cpp
+++ b/backends/fs/symbian/symbian-fs.cpp
@@ -232,7 +232,7 @@ Common::WriteStream *SymbianFilesystemNode::createWriteStream() {
 	return SymbianStdioStream::makeFromPath(getPath(), true);
 }
 
-bool SymbianFilesystemNode::create(bool isDirectoryFlag) {
+bool SymbianFilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/symbian/symbian-fs.h b/backends/fs/symbian/symbian-fs.h
index 0f82120..cd255f7 100644
--- a/backends/fs/symbian/symbian-fs.h
+++ b/backends/fs/symbian/symbian-fs.h
@@ -66,7 +66,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 };
 
 #endif
diff --git a/backends/fs/wii/wii-fs.cpp b/backends/fs/wii/wii-fs.cpp
index c3fdbc0..3b276e9 100644
--- a/backends/fs/wii/wii-fs.cpp
+++ b/backends/fs/wii/wii-fs.cpp
@@ -213,7 +213,7 @@ Common::WriteStream *WiiFilesystemNode::createWriteStream() {
 	return StdioStream::makeFromPath(getPath(), true);
 }
 
-bool WiiFilesystemNode::create(bool isDirectoryFlag) {
+bool WiiFilesystemNode::createDirectory() {
 	error("Not supported");
 	return false;
 }
diff --git a/backends/fs/wii/wii-fs.h b/backends/fs/wii/wii-fs.h
index 491c8d1..7c04ee5 100644
--- a/backends/fs/wii/wii-fs.h
+++ b/backends/fs/wii/wii-fs.h
@@ -69,7 +69,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 };
 
 #endif
diff --git a/backends/fs/windows/windows-fs.cpp b/backends/fs/windows/windows-fs.cpp
index caf0e31..e69e72a 100644
--- a/backends/fs/windows/windows-fs.cpp
+++ b/backends/fs/windows/windows-fs.cpp
@@ -134,6 +134,12 @@ WindowsFilesystemNode::WindowsFilesystemNode(const Common::String &p, const bool
 
 	_displayName = lastPathComponent(_path, '\\');
 
+	setFlags();
+
+	_isPseudoRoot = false;
+}
+
+void WindowsFilesystemNode::setFlags() {
 	// Check whether it is a directory, and whether the file actually exists
 	DWORD fileAttribs = GetFileAttributes(toUnicode(_path.c_str()));
 
@@ -148,7 +154,6 @@ WindowsFilesystemNode::WindowsFilesystemNode(const Common::String &p, const bool
 			_path += '\\';
 		}
 	}
-	_isPseudoRoot = false;
 }
 
 AbstractFSNode *WindowsFilesystemNode::getChild(const Common::String &n) const {
@@ -244,36 +249,11 @@ Common::WriteStream *WindowsFilesystemNode::createWriteStream() {
 	return StdioStream::makeFromPath(getPath(), true);
 }
 
-bool WindowsFilesystemNode::create(bool isDirectoryFlag) {
-	bool success;
-
-	if (isDirectoryFlag) {
-		success = CreateDirectory(toUnicode(_path.c_str()), NULL) != 0;
-	} else {
-		success = CreateFile(toUnicode(_path.c_str()), GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) != INVALID_HANDLE_VALUE;
-	}
-
-	if (success) {
-		//this piece is copied from constructor, it checks that file exists and detects whether it's a directory
-		DWORD fileAttribs = GetFileAttributes(toUnicode(_path.c_str()));
-		if (fileAttribs != INVALID_FILE_ATTRIBUTES) {
-			_isDirectory = ((fileAttribs & FILE_ATTRIBUTE_DIRECTORY) != 0);
-			_isValid = true;
-			// Add a trailing slash, if necessary.
-			if (_isDirectory && _path.lastChar() != '\\') {
-				_path += '\\';
-			}
-
-			if (_isDirectory != isDirectoryFlag) warning("failed to create %s: got %s", isDirectoryFlag ? "directory" : "file", _isDirectory ? "directory" : "file");
-			return _isDirectory == isDirectoryFlag;
-		}
-
-		warning("WindowsFilesystemNode: Create%s() was a success, but GetFileAttributes() indicates there is no such %s",
-			    isDirectoryFlag ? "Directory" : "File", isDirectoryFlag ? "directory" : "file");
-		return false;
-	}
+bool WindowsFilesystemNode::createDirectory() {
+	if (CreateDirectory(toUnicode(_path.c_str()), NULL) != 0)
+		setFlags();
 
-	return false;
+	return _isValid && _isDirectory;
 }
 
 #endif //#ifdef WIN32
diff --git a/backends/fs/windows/windows-fs.h b/backends/fs/windows/windows-fs.h
index f907a4d..e2404da 100644
--- a/backends/fs/windows/windows-fs.h
+++ b/backends/fs/windows/windows-fs.h
@@ -84,7 +84,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream();
-	virtual bool create(bool isDirectoryFlag);
+	virtual bool createDirectory();
 
 private:
 	/**
@@ -114,6 +114,11 @@ private:
 	 * @return str in Unicode format.
 	 */
 	static const TCHAR* toUnicode(const char *str);
+
+	/**
+	 * Tests and sets the _isValid and _isDirectory flags, using the GetFileAttributes() function.
+	 */
+	virtual void setFlags();
 };
 
 #endif
diff --git a/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp b/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
index d315ad2..ad90c44 100644
--- a/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
+++ b/backends/networking/sdl_net/handlers/createdirectoryhandler.cpp
@@ -100,7 +100,7 @@ void CreateDirectoryHandler::handle(Client &client) {
 		}
 	} else {
 		// create the <directory_name> in <path>
-		if (!node->create(true)) {
+		if (!node->createDirectory()) {
 			handleError(client, _("Failed to create the directory!"));
 			return;
 		}
diff --git a/backends/platform/dc/dc-fs.cpp b/backends/platform/dc/dc-fs.cpp
index a4d2675..bfed8a7 100644
--- a/backends/platform/dc/dc-fs.cpp
+++ b/backends/platform/dc/dc-fs.cpp
@@ -57,7 +57,7 @@ public:
 
 	virtual Common::SeekableReadStream *createReadStream();
 	virtual Common::WriteStream *createWriteStream() { return 0; }
-	virtual bool create(bool isDirectoryFlag) { return false; }
+	virtual bool createDirectory() { return false; }
 
 	static AbstractFSNode *makeFileNodePath(const Common::String &path);
 };
diff --git a/common/file.cpp b/common/file.cpp
index 0d760cb..6228c66 100644
--- a/common/file.cpp
+++ b/common/file.cpp
@@ -166,7 +166,7 @@ bool DumpFile::open(const String &filename, bool createPath) {
 					delete node;
 					continue;
 				}
-				if (!node->create(true)) warning("DumpFile: unable to create directories from path prefix");
+				if (!node->createDirectory()) warning("DumpFile: unable to create directories from path prefix");
 				delete node;
 			}
 		}


Commit: db445bfc87600d0f87bdeeb8b3bf40a3a935f097
    https://github.com/scummvm/scummvm/commit/db445bfc87600d0f87bdeeb8b3bf40a3a935f097
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2019-08-06T07:17:29+03:00

Commit Message:
BACKENDS: Improve AbstractFSNode::createDirectory() stubs

Changed paths:
    backends/fs/amigaos4/amigaos4-fs.cpp
    backends/fs/chroot/chroot-fs.cpp
    backends/fs/ds/ds-fs.cpp
    backends/fs/n64/n64-fs.cpp
    backends/fs/ps2/ps2-fs.cpp
    backends/fs/psp/psp-fs.cpp
    backends/fs/symbian/symbian-fs.cpp
    backends/fs/wii/wii-fs.cpp
    backends/platform/dc/dc-fs.cpp
    backends/platform/tizen/fs.cpp
    backends/platform/tizen/fs.h


diff --git a/backends/fs/amigaos4/amigaos4-fs.cpp b/backends/fs/amigaos4/amigaos4-fs.cpp
index fa0ea14..3561303 100644
--- a/backends/fs/amigaos4/amigaos4-fs.cpp
+++ b/backends/fs/amigaos4/amigaos4-fs.cpp
@@ -444,8 +444,8 @@ Common::WriteStream *AmigaOSFilesystemNode::createWriteStream() {
 }
 
 bool AmigaOSFilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	warning("AmigaOSFilesystemNode::createDirectory(): Not supported");
+	return _bIsValid && _bIsDirectory;
 }
 
 #endif //defined(__amigaos4__)
diff --git a/backends/fs/chroot/chroot-fs.cpp b/backends/fs/chroot/chroot-fs.cpp
index 0fdd14c..bd1f93a 100644
--- a/backends/fs/chroot/chroot-fs.cpp
+++ b/backends/fs/chroot/chroot-fs.cpp
@@ -101,8 +101,7 @@ Common::WriteStream *ChRootFilesystemNode::createWriteStream() {
 }
 
 bool ChRootFilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	return _realNode->createDirectory();
 }
 
 Common::String ChRootFilesystemNode::addPathComponent(const Common::String &path, const Common::String &component) {
diff --git a/backends/fs/ds/ds-fs.cpp b/backends/fs/ds/ds-fs.cpp
index 8498a77..64430f3 100644
--- a/backends/fs/ds/ds-fs.cpp
+++ b/backends/fs/ds/ds-fs.cpp
@@ -212,8 +212,7 @@ Common::WriteStream *DSFileSystemNode::createWriteStream() {
 }
 
 bool DSFileSystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	return _isValid && _isDirectory;
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -399,8 +398,8 @@ Common::WriteStream *GBAMPFileSystemNode::createWriteStream() {
 }
 
 bool GBAMPFileSystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	warning("GBAMPFileSystemNode::createDirectory(): Not supported");
+	return _isValid && _isDirectory;
 }
 
 
diff --git a/backends/fs/n64/n64-fs.cpp b/backends/fs/n64/n64-fs.cpp
index 4a21fb2..5049334 100644
--- a/backends/fs/n64/n64-fs.cpp
+++ b/backends/fs/n64/n64-fs.cpp
@@ -161,8 +161,7 @@ Common::WriteStream *N64FilesystemNode::createWriteStream() {
 }
 
 bool N64FilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	return _isValid && _isDirectory;
 }
 
 #endif //#ifdef __N64__
diff --git a/backends/fs/ps2/ps2-fs.cpp b/backends/fs/ps2/ps2-fs.cpp
index ec75f1e..80382d2 100644
--- a/backends/fs/ps2/ps2-fs.cpp
+++ b/backends/fs/ps2/ps2-fs.cpp
@@ -444,8 +444,8 @@ Common::WriteStream *Ps2FilesystemNode::createWriteStream() {
 }
 
 bool Ps2FilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	warning("Ps2FilesystemNode::createDirectory(): Not supported");
+	return _isHere && _isDirectory;
 }
 
 #endif
diff --git a/backends/fs/psp/psp-fs.cpp b/backends/fs/psp/psp-fs.cpp
index 01884de..e79d07d 100644
--- a/backends/fs/psp/psp-fs.cpp
+++ b/backends/fs/psp/psp-fs.cpp
@@ -240,8 +240,8 @@ Common::WriteStream *PSPFilesystemNode::createWriteStream() {
 }
 
 bool PSPFilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	warning("PSPFilesystemNode::createDirectory(): Not supported");
+	return _isValid && _isDirectory;
 }
 
 #endif //#ifdef __PSP__
diff --git a/backends/fs/symbian/symbian-fs.cpp b/backends/fs/symbian/symbian-fs.cpp
index 7759f32..96fa84a 100644
--- a/backends/fs/symbian/symbian-fs.cpp
+++ b/backends/fs/symbian/symbian-fs.cpp
@@ -233,8 +233,8 @@ Common::WriteStream *SymbianFilesystemNode::createWriteStream() {
 }
 
 bool SymbianFilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	warning("SymbianFilesystemNode::createDirectory(): Not supported");
+	return _isValid && _isDirectory;
 }
 
 #endif //#if defined(__SYMBIAN32__)
diff --git a/backends/fs/wii/wii-fs.cpp b/backends/fs/wii/wii-fs.cpp
index 3b276e9..c54cdef 100644
--- a/backends/fs/wii/wii-fs.cpp
+++ b/backends/fs/wii/wii-fs.cpp
@@ -214,8 +214,8 @@ Common::WriteStream *WiiFilesystemNode::createWriteStream() {
 }
 
 bool WiiFilesystemNode::createDirectory() {
-	error("Not supported");
-	return false;
+	warning("WiiFilesystemNode::createDirectory(): Not supported");
+	return _exists && _isDirectory;
 }
 
 #endif //#if defined(__WII__)
diff --git a/backends/platform/dc/dc-fs.cpp b/backends/platform/dc/dc-fs.cpp
index bfed8a7..43d9a9e 100644
--- a/backends/platform/dc/dc-fs.cpp
+++ b/backends/platform/dc/dc-fs.cpp
@@ -71,6 +71,7 @@ public:
 	virtual AbstractFSNode *getChild(const Common::String &n) const;
 	virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
 	virtual Common::SeekableReadStream *createReadStream() { return 0; }
+	virtual bool createDirectory() { return true; }
 };
 
 /* A file/directory which does not exist */
diff --git a/backends/platform/tizen/fs.cpp b/backends/platform/tizen/fs.cpp
index c6cd8f0..1827b7d 100644
--- a/backends/platform/tizen/fs.cpp
+++ b/backends/platform/tizen/fs.cpp
@@ -439,3 +439,8 @@ Common::WriteStream *TizenFilesystemNode::createWriteStream() {
 	}
 	return result;
 }
+
+bool TizenFilesystemNode::createDirectory() {
+	warning("TizenFilesystemNode::createDirectory(): Not supported");
+	return _isValid && isDirectory();
+}
diff --git a/backends/platform/tizen/fs.h b/backends/platform/tizen/fs.h
index 8c1677f..1da226b 100644
--- a/backends/platform/tizen/fs.h
+++ b/backends/platform/tizen/fs.h
@@ -83,6 +83,7 @@ public:
 
 	Common::SeekableReadStream *createReadStream();
 	Common::WriteStream *createWriteStream();
+	bool createDirectory();
 
 protected:
 	TizenFilesystemNode(const Common::String &root, const Common::String &p);





More information about the Scummvm-git-logs mailing list