diff options
author | Max Horn | 2008-03-12 18:42:47 +0000 |
---|---|---|
committer | Max Horn | 2008-03-12 18:42:47 +0000 |
commit | 05b159609b074fb4f45454edcc92446557b3167d (patch) | |
tree | 364031614d98882d7b3beb592dfbd319c131348e /backends/fs/morphos | |
parent | b434f189bce98626dbe31539bb8d907e67d5ca99 (diff) | |
download | scummvm-rg350-05b159609b074fb4f45454edcc92446557b3167d.tar.gz scummvm-rg350-05b159609b074fb4f45454edcc92446557b3167d.tar.bz2 scummvm-rg350-05b159609b074fb4f45454edcc92446557b3167d.zip |
Removed remaining traces of the dead MorphOS backend, which itself was removed about one year ago
svn-id: r31114
Diffstat (limited to 'backends/fs/morphos')
-rw-r--r-- | backends/fs/morphos/abox-fs-factory.cpp | 42 | ||||
-rw-r--r-- | backends/fs/morphos/abox-fs-factory.h | 51 | ||||
-rw-r--r-- | backends/fs/morphos/abox-fs.cpp | 418 |
3 files changed, 0 insertions, 511 deletions
diff --git a/backends/fs/morphos/abox-fs-factory.cpp b/backends/fs/morphos/abox-fs-factory.cpp deleted file mode 100644 index be96deb61b..0000000000 --- a/backends/fs/morphos/abox-fs-factory.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#if defined(__MORPHOS__) -#include "backends/fs/morphos/abox-fs-factory.h" -#include "backends/fs/morphos/abox-fs.cpp" - -DECLARE_SINGLETON(ABoxFilesystemFactory); - -AbstractFilesystemNode *ABoxFilesystemFactory::makeRootFileNode() const { - return new ABoxFilesystemNode(); -} - -AbstractFilesystemNode *ABoxFilesystemFactory::makeCurrentDirectoryFileNode() const { - return new ABoxFilesystemNode(); -} - -AbstractFilesystemNode *ABoxFilesystemFactory::makeFileNodePath(const String &path) const { - return new ABoxFilesystemNode(path); -} -#endif diff --git a/backends/fs/morphos/abox-fs-factory.h b/backends/fs/morphos/abox-fs-factory.h deleted file mode 100644 index 0a53822447..0000000000 --- a/backends/fs/morphos/abox-fs-factory.h +++ /dev/null @@ -1,51 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#ifndef ABOX_FILESYSTEM_FACTORY_H -#define ABOX_FILESYSTEM_FACTORY_H - -#include "common/singleton.h" -#include "backends/fs/fs-factory.h" - -/** - * Creates ABoxFilesystemNode objects. - * - * Parts of this class are documented in the base interface class, FilesystemFactory. - */ -class ABoxFilesystemFactory : public FilesystemFactory, public Common::Singleton<ABoxFilesystemFactory> { -public: - typedef Common::String String; - - virtual AbstractFilesystemNode *makeRootFileNode() const; - virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const; - virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const; - -protected: - ABoxFilesystemFactory() {}; - -private: - friend class Common::Singleton<SingletonBaseType>; -}; - -#endif /*ABOX_FILESYSTEM_FACTORY_H*/ diff --git a/backends/fs/morphos/abox-fs.cpp b/backends/fs/morphos/abox-fs.cpp deleted file mode 100644 index 9274c3804b..0000000000 --- a/backends/fs/morphos/abox-fs.cpp +++ /dev/null @@ -1,418 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#if defined(__MORPHOS__) - -#include <proto/dos.h> - -#include <stdio.h> -#include <sys/stat.h> - -#include "common/util.h" -#include "base/engine.h" -#include "backends/fs/abstract-fs.h" - -/** - * Implementation of the ScummVM file system API based on the MorphOS A-Box API. - * - * Parts of this class are documented in the base interface class, AbstractFilesystemNode. - */ -class ABoxFilesystemNode : public AbstractFilesystemNode { -protected: - BPTR _lock; - String _displayName; - String _path; - bool _isDirectory; - bool _isValid; - -public: - /** - * Creates a ABoxFilesystemNode with the root node as path. - */ - ABoxFilesystemNode(); - - /** - * Creates a ABoxFilesystemNode for a given path. - * - * @param path String with the path the new node should point to. - */ - ABoxFilesystemNode(const String &p); - - /** - * FIXME: document this constructor. - */ - ABoxFilesystemNode(BPTR lock, CONST_STRPTR display_name = NULL); - - /** - * Copy constructor. - */ - ABoxFilesystemNode(const ABoxFilesystemNode &node); - - /** - * Destructor. - */ - ~ABoxFilesystemNode(); - - virtual bool exists() const { return true; } //FIXME: this is just a stub - virtual String getDisplayName() const { return _displayName; } - virtual String getName() const { return _displayName; }; - virtual String getPath() const { return _path; } - virtual bool isDirectory() const { return _isDirectory; } - virtual bool isReadable() const { return true; } //FIXME: this is just a stub - virtual bool isWritable() const { return true; } //FIXME: this is just a stub - - virtual AbstractFilesystemNode *getChild(const String &name) const; - virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const; - virtual AbstractFilesystemNode *getParent() const; - - /** - * Return the list of child nodes for the root node. - */ - static AbstractFSList getRootChildren(); -}; - -/** - * Returns the last component of a given path. - * - * @param str String containing the path. - * @return Pointer to the first char of the last component inside str. - */ -const char *lastPathComponent(const Common::String &str) { - if (str.empty()) - return ""; - - const char *str = _path.c_str(); - while (offset > 0 && (str[offset-1] == '/' || str[offset-1] == ':') ) - offset--; - while (offset > 0 && (str[offset-1] != '/' && str[offset-1] != ':')) { - len++; - offset--; - } - - return str + offset; -} - -ABoxFilesystemNode::ABoxFilesystemNode() -{ - _path = ""; - _displayName = "Mounted Volumes"; - _isValid = true; - _isDirectory = true; - _lock = NULL; -} - -ABoxFilesystemNode::ABoxFilesystemNode(const String &p) { - int len = 0, offset = p.size(); - - assert(offset > 0); - - _path = p; - _displayName = lastPathComponent(_path); - _lock = NULL; - _isDirectory = false; - - struct FileInfoBlock *fib = (struct FileInfoBlock *)AllocDosObject(DOS_FIB, NULL); - if (!fib) - { - debug(6, "FileInfoBlock is NULL"); - return; - } - - // Check whether the node exists and if it is a directory - BPTR pLock = Lock((STRPTR)_path.c_str(), SHARED_LOCK); - if (pLock) - { - if (Examine(pLock, fib) != DOSFALSE) { - if (fib->fib_EntryType > 0) - { - _isDirectory = true; - _lock = DupLock(pLock); - _isValid = (_lock != 0); - - // Add a trailing slash if it is needed - const char c = _path.lastChar(); - if (c != '/' && c != ':') - _path += '/'; - - } - else - { - _isDirectory = false; - _isValid = true; - } - } - - UnLock(pLock); - } - - FreeDosObject(DOS_FIB, fib); -} - -ABoxFilesystemNode::ABoxFilesystemNode(BPTR lock, CONST_STRPTR display_name) -{ - int bufsize = 256; - - _lock = NULL; - for (;;) - { - char name[bufsize]; - if (NameFromLock(lock, name, bufsize) != DOSFALSE) - { - _path = name; - _displayName = display_name ? display_name : FilePart(name); - break; - } - if (IoErr() != ERROR_LINE_TOO_LONG) - { - _isValid = false; - debug(6, "Error while retrieving path name: %ld", IoErr()); - return; - } - bufsize *= 2; - } - - _isDirectory = false; - _isValid = false; - - FileInfoBlock *fib = (FileInfoBlock*) AllocDosObject(DOS_FIB, NULL); - if (fib == NULL) - { - debug(6, "Failed to allocate memory for FileInfoBlock"); - return; - } - - if (Examine(lock, fib) != DOSFALSE) - { - _isDirectory = fib->fib_EntryType > 0; - if (_isDirectory) - { - if (fib->fib_EntryType != ST_ROOT) - _path += "/"; - _lock = DupLock(lock); - _isValid = (_lock != NULL); - } - else - { - _isValid = true; - } - } - - FreeDosObject(DOS_FIB, fib); -} - -ABoxFilesystemNode::ABoxFilesystemNode(const ABoxFilesystemNode& node) -{ - _path = node._path; - _displayName = node._displayName; - _isValid = node._isValid; - _isDirectory = node._isDirectory; - _lock = DupLock(node._lock); -} - -ABoxFilesystemNode::~ABoxFilesystemNode() -{ - if (_lock) - { - UnLock(_lock); - _lock = NULL; - } -} - -AbstractFilesystemNode *ABoxFilesystemNode::getChild(const String &name) const { - assert(_isDirectory); - String newPath(_path); - - if (_path.lastChar() != '/') - newPath += '/'; - newPath += name; - - BPTR lock = Lock(newPath.c_str(), SHARED_LOCK); - - if (!lock) - { - return 0; - } - - UnLock(lock); - - return new ABoxFilesystemNode(newPath); -} - -bool ABoxFilesystemNode::getChildren(AbstractFSList &list, ListMode mode, bool hidden) const -{ - //TODO: honor the hidden flag - - if (!_isValid) - { - debug(6, "listDir() called on invalid node"); - return false; - } - if (!_isDirectory) - { - debug(6, "listDir() called on file node"); - return false; - } - - if (_lock == NULL) - { - /* This is the root node */ - list = getRootChildren(); - return true; - } - - /* "Normal" file system directory */ - FileInfoBlock *fib = (FileInfoBlock*) AllocDosObject(DOS_FIB, NULL); - - if (fib == NULL) - { - debug(6, "Failed to allocate memory for FileInfoBlock"); - return false; - } - - if (Examine(_lock, fib) != DOSFALSE) - { - while (ExNext(_lock, fib) != DOSFALSE) - { - ABoxFilesystemNode *entry; - String full_path; - BPTR lock; - - if ((mode == FilesystemNode::kListAll) || - (fib->fib_EntryType > 0 && (mode & FilesystemNode::kListDirectoriesOnly)) || - (fib->fib_EntryType < 0 && (mode & FilesystemNode::kListFilesOnly))) - { - full_path = _path; - full_path += fib->fib_FileName; - lock = Lock(full_path.c_str(), SHARED_LOCK); - if (lock) - { - entry = new ABoxFilesystemNode(lock, fib->fib_FileName); - if (entry) - { - //FIXME: since the isValid() function is no longer part of the AbstractFilesystemNode - // specification, the following call had to be changed: - // if (entry->isValid()) - // Please verify that the logic of the code remains coherent. Also, remember - // that the isReadable() and isWritable() methods are available. - if (entry->exists()) - list.push_back(entry); - else - delete entry; - } - UnLock(lock); - } - } - } - - if (IoErr() != ERROR_NO_MORE_ENTRIES) - debug(6, "Error while reading directory: %ld", IoErr()); - } - - FreeDosObject(DOS_FIB, fib); - - return true; -} - -AbstractFilesystemNode *ABoxFilesystemNode::getParent() const -{ - AbstractFilesystemNode *node = NULL; - - if (!_isDirectory) - { - debug(6, "parent() called on file node"); - return NULL; - } - - if (_lock == NULL) { - /* Parent of the root is the root itself */ - return new ABoxFilesystemNode(*this); - } else { - BPTR parent_lock = ParentDir(_lock); - if (parent_lock) { - node = new ABoxFilesystemNode(parent_lock); - UnLock(parent_lock); - } else - node = new ABoxFilesystemNode(); - } - - return node; -} - -AbstractFSList ABoxFilesystemNode::getRootChildren() -{ - AbstractFSList list; - DosList *dosList; - CONST ULONG lockDosListFlags = LDF_READ | LDF_VOLUMES; - char name[256]; - - dosList = LockDosList(lockDosListFlags); - if (dosList == NULL) - { - return list; - } - - dosList = NextDosEntry(dosList, LDF_VOLUMES); - while (dosList) - { - if (dosList->dol_Type == DLT_VOLUME && // Should always be true, but ... - dosList->dol_Name && // Same here - dosList->dol_Task // Will be NULL if volume is removed from drive but still in use by some program - ) - { - ABoxFilesystemNode *entry; - CONST_STRPTR volume_name = (CONST_STRPTR)BADDR(dosList->dol_Name)+1; - CONST_STRPTR device_name = (CONST_STRPTR)((struct Task *)dosList->dol_Task->mp_SigTask)->tc_Node.ln_Name; - BPTR volume_lock; - - strcpy(name, volume_name); - strcat(name, ":"); - volume_lock = Lock(name, SHARED_LOCK); - if (volume_lock) - { - sprintf(name, "%s (%s)", volume_name, device_name); - entry = new ABoxFilesystemNode(volume_lock, name); - if (entry) - { - //FIXME: since the isValid() function is no longer part of the AbstractFilesystemNode - // specification, the following call had to be changed: - // if (entry->isValid()) - // Please verify that the logic of the code remains coherent. Also, remember - // that the isReadable() and isWritable() methods are available. - if (entry->exists()) - list.push_back(entry); - else - delete entry; - } - UnLock(volume_lock); - } - } - dosList = NextDosEntry(dosList, LDF_VOLUMES); - } - - UnLockDosList(lockDosListFlags); - - return list; -} - -#endif // defined(__MORPHOS__) |