diff options
author | Marcus Comstedt | 2008-03-01 15:45:54 +0000 |
---|---|---|
committer | Marcus Comstedt | 2008-03-01 15:45:54 +0000 |
commit | 964caae2ddc681eec5bd7353a162f584c4fef7d8 (patch) | |
tree | 077d3c87a0d360516a7eeeb524a98ccad2a0f3c9 /backends/fs | |
parent | 85b61f3d1032fb5c70ce4a4e23a68b1dd05d2b8f (diff) | |
download | scummvm-rg350-964caae2ddc681eec5bd7353a162f584c4fef7d8.tar.gz scummvm-rg350-964caae2ddc681eec5bd7353a162f584c4fef7d8.tar.bz2 scummvm-rg350-964caae2ddc681eec5bd7353a162f584c4fef7d8.zip |
Moved Dreamcast filesystem factory to platform directory.
svn-id: r31021
Diffstat (limited to 'backends/fs')
-rw-r--r-- | backends/fs/dc/dc-fs.cpp | 193 | ||||
-rw-r--r-- | backends/fs/dc/ronincd-fs-factory.cpp | 42 | ||||
-rw-r--r-- | backends/fs/dc/ronincd-fs-factory.h | 51 |
3 files changed, 0 insertions, 286 deletions
diff --git a/backends/fs/dc/dc-fs.cpp b/backends/fs/dc/dc-fs.cpp deleted file mode 100644 index 16b77857c0..0000000000 --- a/backends/fs/dc/dc-fs.cpp +++ /dev/null @@ -1,193 +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(__DC__) - -#include "backends/fs/abstract-fs.h" - -#include <ronin/cdfs.h> -#include <stdio.h> -#include <unistd.h> - -/** - * Implementation of the ScummVM file system API based on Ronin. - * - * Parts of this class are documented in the base interface class, AbstractFilesystemNode. - */ -class RoninCDFilesystemNode : public AbstractFilesystemNode { -protected: - String _displayName; - String _path; - bool _isDirectory; - bool _isValid; - -public: - /** - * Creates a RoninCDFilesystemNode with the root node as path. - */ - RoninCDFilesystemNode(); - - /** - * Creates a RoninCDFilesystemNode for a given path. - * - * @param path String with the path the new node should point to. - * @param verify true if the isValid and isDirectory flags should be verified during the construction. - */ - RoninCDFilesystemNode(const String &path, bool verify); - - virtual bool exists() const { return _isValid; } - 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; } - virtual bool isWritable() const { return false; } - - virtual AbstractFilesystemNode *getChild(const String &n) const; - virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const; - virtual AbstractFilesystemNode *getParent() const; -}; - -/** - * Returns the last component of a given path. - * - * Examples: - * /foo/bar.txt would return /bar.txt - * /foo/bar/ would return /bar/ - * - * @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 *start = str.c_str(); - const char *cur = start + str.size() - 2; - - while (cur >= start && *cur != '/') { - --cur; - } - - return cur + 1; -} - -RoninCDFilesystemNode::RoninCDFilesystemNode() { - // The root dir. - _path = "/"; - _displayName = _path; - _isValid = true; - _isDirectory = true; -} - -RoninCDFilesystemNode::RoninCDFilesystemNode(const String &p, bool verify) { - assert(p.size() > 0); - - _path = p; - _displayName = lastPathComponent(_path); - _isValid = true; - _isDirectory = true; - - if (verify) { - int fd; - - if ((fd = open(_path.c_str(), O_RDONLY)) >= 0) { - close(fd); - _isDirectory = false; - } - else if ((fd = open(_path.c_str(), O_DIR|O_RDONLY)) >= 0) { - close(fd); - } - else { - _isValid = false; - } - } -} - -AbstractFilesystemNode *RoninCDFilesystemNode::getChild(const String &n) const { - // FIXME: Pretty lame implementation! We do no error checking to speak - // of, do not check if this is a special node, etc. - assert(_isDirectory); - - String newPath(_path); - if (_path.lastChar() != '/') - newPath += '/'; - newPath += n; - - return new RoninCDFilesystemNode(newPath, true); -} - -bool RoninCDFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode, bool hidden) const { - assert(_isDirectory); - - //TODO: honor the hidden flag - - DIR *dirp = opendir(_path.c_str()); - struct dirent *dp; - - if (dirp == NULL) - return false; - - // ... loop over dir entries using readdir - while ((dp = readdir(dirp)) != NULL) { - String newPath(_path); - if (newPath.lastChar() != '/') - newPath += '/'; - newPath += dp->d_name; - - RoninCDFilesystemNode entry(newPath, false); - - entry._isDirectory = dp->d_size < 0; - - // Skip files that are invalid for some reason (e.g. because we couldn't - // properly stat them). - if (!entry._isValid) - continue; - - // Honor the chosen mode - if ((mode == FilesystemNode::kListFilesOnly && entry._isDirectory) || - (mode == FilesystemNode::kListDirectoriesOnly && !entry._isDirectory)) - continue; - - if (entry._isDirectory) - entry._path += "/"; - - myList.push_back(new RoninCDFilesystemNode(entry)); - } - closedir(dirp); - - return true; -} - -AbstractFilesystemNode *RoninCDFilesystemNode::getParent() const { - if (_path == "/") - return 0; - - const char *start = _path.c_str(); - const char *end = lastPathComponent(_path); - - return new RoninCDFilesystemNode(String(start, end - start), false); -} - -#endif // defined(__DC__) diff --git a/backends/fs/dc/ronincd-fs-factory.cpp b/backends/fs/dc/ronincd-fs-factory.cpp deleted file mode 100644 index 12ec1ffd68..0000000000 --- a/backends/fs/dc/ronincd-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(__DC__) -#include "backends/fs/dc/ronincd-fs-factory.h" -#include "backends/fs/dc/dc-fs.cpp" - -DECLARE_SINGLETON(RoninCDFilesystemFactory); - -AbstractFilesystemNode *RoninCDFilesystemFactory::makeRootFileNode() const { - return new RoninCDFilesystemNode(); -} - -AbstractFilesystemNode *RoninCDFilesystemFactory::makeCurrentDirectoryFileNode() const { - return new RoninCDFilesystemNode(); -} - -AbstractFilesystemNode *RoninCDFilesystemFactory::makeFileNodePath(const String &path) const { - return new RoninCDFilesystemNode(path, true); -} -#endif diff --git a/backends/fs/dc/ronincd-fs-factory.h b/backends/fs/dc/ronincd-fs-factory.h deleted file mode 100644 index 532a6d3333..0000000000 --- a/backends/fs/dc/ronincd-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 RONINCD_FILESYSTEM_FACTORY_H -#define RONINCD_FILESYSTEM_FACTORY_H - -#include "common/singleton.h" -#include "backends/fs/fs-factory.h" - -/** - * Creates RoninCDFilesystemNode objects. - * - * Parts of this class are documented in the base interface class, FilesystemFactory. - */ -class RoninCDFilesystemFactory : public FilesystemFactory, public Common::Singleton<RoninCDFilesystemFactory> { -public: - typedef Common::String String; - - virtual AbstractFilesystemNode *makeRootFileNode() const; - virtual AbstractFilesystemNode *makeCurrentDirectoryFileNode() const; - virtual AbstractFilesystemNode *makeFileNodePath(const String &path) const; - -protected: - RoninCDFilesystemFactory() {}; - -private: - friend class Common::Singleton<SingletonBaseType>; -}; - -#endif /*RONINCD_FILESYSTEM_FACTORY_H*/ |