diff options
| -rw-r--r-- | backends/fs/amigaos4/amigaos4-fs.cpp | 13 | ||||
| -rw-r--r-- | backends/fs/amigaos4/amigaos4-fs.h | 6 | 
2 files changed, 13 insertions, 6 deletions
| diff --git a/backends/fs/amigaos4/amigaos4-fs.cpp b/backends/fs/amigaos4/amigaos4-fs.cpp index 6d713f10be..bd8bf1978a 100644 --- a/backends/fs/amigaos4/amigaos4-fs.cpp +++ b/backends/fs/amigaos4/amigaos4-fs.cpp @@ -81,6 +81,7 @@ AmigaOSFilesystemNode::AmigaOSFilesystemNode(const Common::String &p) {  	_sDisplayName = ::lastPathComponent(_sPath);  	_pFileLock = 0;  	_bIsDirectory = false; +	_bIsValid = false;  	// Check whether the node exists and if it is a directory  	struct ExamineData * pExd = IDOS->ExamineObjectTags(EX_StringNameInput,_sPath.c_str(),TAG_END); @@ -305,12 +306,6 @@ bool AmigaOSFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode, b  AbstractFSNode *AmigaOSFilesystemNode::getParent() const {  	ENTER(); -	if (!_bIsDirectory) { -		debug(6, "Not a directory"); -		LEAVE(); -		return 0; -	} -  	if (_pFileLock == 0) {  		debug(6, "Root node");  		LEAVE(); @@ -332,6 +327,9 @@ AbstractFSNode *AmigaOSFilesystemNode::getParent() const {  }  bool AmigaOSFilesystemNode::isReadable() const { +	if (!_bIsValid) +		return false; +  	// Regular RWED protection flags are low-active or inverted, thus the negation.  	// moreover pseudo root filesystem (null _pFileLock) is readable whatever the  	// protection says @@ -341,6 +339,9 @@ bool AmigaOSFilesystemNode::isReadable() const {  }  bool AmigaOSFilesystemNode::isWritable() const { +	if (!_bIsValid) +		return false; +  	// Regular RWED protection flags are low-active or inverted, thus the negation.  	// moreover pseudo root filesystem (null _pFileLock) is never writable whatever  	// the protection says (because of the pseudo nature) diff --git a/backends/fs/amigaos4/amigaos4-fs.h b/backends/fs/amigaos4/amigaos4-fs.h index c5ca61476f..7ce9981479 100644 --- a/backends/fs/amigaos4/amigaos4-fs.h +++ b/backends/fs/amigaos4/amigaos4-fs.h @@ -43,7 +43,13 @@   */  class AmigaOSFilesystemNode : public AbstractFSNode {  protected: +	/** +	 * The main file lock. +	 * If this is NULL but _bIsValid is true, then this Node references +	 * the virtual filesystem root. +	 */  	BPTR _pFileLock; +  	Common::String _sDisplayName;  	Common::String _sPath;  	bool _bIsDirectory; | 
