aboutsummaryrefslogtreecommitdiff
path: root/backends/fs/amigaos4/amigaos4-fs.cpp
diff options
context:
space:
mode:
authorDavid Corrales2007-10-30 21:31:39 +0000
committerDavid Corrales2007-10-30 21:31:39 +0000
commit5b9e6a47fc9b7e4e75db3675092363cbb5a1f6d5 (patch)
treee8ae64be2dcdc525151fbe64fe38d16ef5c7c25e /backends/fs/amigaos4/amigaos4-fs.cpp
parentecbd31160e99cf7ee5e49fd2eddf510dd57f94e6 (diff)
downloadscummvm-rg350-5b9e6a47fc9b7e4e75db3675092363cbb5a1f6d5.tar.gz
scummvm-rg350-5b9e6a47fc9b7e4e75db3675092363cbb5a1f6d5.tar.bz2
scummvm-rg350-5b9e6a47fc9b7e4e75db3675092363cbb5a1f6d5.zip
Implement the AmigaOSFilesystemNode::exists() method.
svn-id: r29327
Diffstat (limited to 'backends/fs/amigaos4/amigaos4-fs.cpp')
-rw-r--r--backends/fs/amigaos4/amigaos4-fs.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/backends/fs/amigaos4/amigaos4-fs.cpp b/backends/fs/amigaos4/amigaos4-fs.cpp
index 71ddd182e2..9d94fdc60c 100644
--- a/backends/fs/amigaos4/amigaos4-fs.cpp
+++ b/backends/fs/amigaos4/amigaos4-fs.cpp
@@ -87,7 +87,7 @@ public:
*/
virtual ~AmigaOSFilesystemNode();
- virtual bool exists() const { return true; } //FIXME: this is just a stub
+ virtual bool exists() const;
virtual String getDisplayName() const { return _sDisplayName; };
virtual String getName() const { return _sDisplayName; };
virtual String getPath() const { return _sPath; };
@@ -265,6 +265,25 @@ AmigaOSFilesystemNode::~AmigaOSFilesystemNode() {
LEAVE();
}
+bool AmigaOSFilesystemNode::exists() const {
+ if(_sPath.empty())
+ return false;
+
+ bool nodeExists = false;
+ ENTER();
+
+ BPTR pLock = IDOS->Lock((STRPTR)_sPath.c_str(), SHARED_LOCK);
+ if (pLock) {
+ if (IDOS->Examine(pLock, fib) != DOSFALSE) {
+ nodeExists = true;
+ }
+ IDOS->UnLock(pLock);
+ }
+
+ LEAVE();
+ return nodeExists;
+}
+
AbstractFilesystemNode *AmigaOSFilesystemNode::getChild(const String &n) const {
if (!_bIsDirectory) {
debug(6, "Not a directory");