aboutsummaryrefslogtreecommitdiff
path: root/backends/fs
diff options
context:
space:
mode:
authorMarcus Comstedt2008-03-01 15:45:54 +0000
committerMarcus Comstedt2008-03-01 15:45:54 +0000
commit964caae2ddc681eec5bd7353a162f584c4fef7d8 (patch)
tree077d3c87a0d360516a7eeeb524a98ccad2a0f3c9 /backends/fs
parent85b61f3d1032fb5c70ce4a4e23a68b1dd05d2b8f (diff)
downloadscummvm-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.cpp193
-rw-r--r--backends/fs/dc/ronincd-fs-factory.cpp42
-rw-r--r--backends/fs/dc/ronincd-fs-factory.h51
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*/