aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Corrales2007-06-17 17:17:38 +0000
committerDavid Corrales2007-06-17 17:17:38 +0000
commit8ebf479bc5db8cf4996cc0820269aaf04139b940 (patch)
tree6a698da9142fee9fb07d6dbd4ac0d36e47787a56
parentfe4ee4740d76b0aee2032814095f1d2b81dbde14 (diff)
downloadscummvm-rg350-8ebf479bc5db8cf4996cc0820269aaf04139b940.tar.gz
scummvm-rg350-8ebf479bc5db8cf4996cc0820269aaf04139b940.tar.bz2
scummvm-rg350-8ebf479bc5db8cf4996cc0820269aaf04139b940.zip
Added a new parameter to the getChildren function, which allows including hidden files in the results.
svn-id: r27514
-rw-r--r--backends/fs/abstract-fs.h3
-rw-r--r--backends/fs/posix/posix-fs.cpp8
-rw-r--r--common/fs.cpp4
-rw-r--r--common/fs.h5
4 files changed, 10 insertions, 10 deletions
diff --git a/backends/fs/abstract-fs.h b/backends/fs/abstract-fs.h
index fed2b9b4c5..371c38a495 100644
--- a/backends/fs/abstract-fs.h
+++ b/backends/fs/abstract-fs.h
@@ -89,10 +89,11 @@ public:
*
* @param list List to put the contents of the directory in.
* @param mode Mode to use while listing the directory.
+ * @param hidden Whether to include hidden files or not in the results.
*
* @return true if succesful, false otherwise (e.g. when the directory does not exist).
*/
- virtual bool getChildren(AbstractFSList &list, ListMode mode) const = 0;
+ virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const = 0;
/**
* Returns a human readable path string.
diff --git a/backends/fs/posix/posix-fs.cpp b/backends/fs/posix/posix-fs.cpp
index fb5c9dc5d7..c976830402 100644
--- a/backends/fs/posix/posix-fs.cpp
+++ b/backends/fs/posix/posix-fs.cpp
@@ -71,7 +71,7 @@ public:
virtual bool isWritable() const { return access(_path.c_str(), W_OK) == 0; }
virtual AbstractFilesystemNode *getChild(const String &n) const;
- virtual bool getChildren(AbstractFSList &list, ListMode mode) const;
+ virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;
virtual AbstractFilesystemNode *getParent() const;
private:
@@ -162,7 +162,7 @@ AbstractFilesystemNode *POSIXFilesystemNode::getChild(const String &n) const {
return new POSIXFilesystemNode(newPath, true);
}
-bool POSIXFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode) const {
+bool POSIXFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode, bool hidden) const {
assert(_isDirectory);
DIR *dirp = opendir(_path.c_str());
@@ -173,8 +173,8 @@ bool POSIXFilesystemNode::getChildren(AbstractFSList &myList, ListMode mode) con
// loop over dir entries using readdir
while ((dp = readdir(dirp)) != NULL) {
- // Skip 'invisible' files
- if (dp->d_name[0] == '.')
+ // Skip 'invisible' files if necessary
+ if (dp->d_name[0] == '.' && !hidden)
continue;
String newPath(_path);
diff --git a/common/fs.cpp b/common/fs.cpp
index fc091262d7..6eaa35e67f 100644
--- a/common/fs.cpp
+++ b/common/fs.cpp
@@ -105,13 +105,13 @@ FilesystemNode FilesystemNode::getChild(const Common::String &n) const {
return FilesystemNode(node);
}
-bool FilesystemNode::getChildren(FSList &fslist, ListMode mode) const {
+bool FilesystemNode::getChildren(FSList &fslist, ListMode mode, bool hidden) const {
if (!_realNode || !_realNode->isDirectory())
return false;
AbstractFSList tmp;
- if (!_realNode->getChildren(tmp, mode))
+ if (!_realNode->getChildren(tmp, mode, hidden))
return false;
fslist.clear();
diff --git a/common/fs.h b/common/fs.h
index 328bebb15b..7291fb75fc 100644
--- a/common/fs.h
+++ b/common/fs.h
@@ -67,7 +67,6 @@ class FilesystemNode {
private:
int *_refCount;
AbstractFilesystemNode *_realNode;
-
FilesystemNode(AbstractFilesystemNode *realNode);
public:
@@ -136,14 +135,14 @@ public:
* that does not represent a directory, false is returned.
*
* @return true if succesful, false otherwise (e.g. when the directory does not exist).
- * @todo Rename this to listChildren or getChildren.
*/
- virtual bool getChildren(FSList &fslist, ListMode mode = kListDirectoriesOnly) const;
+ virtual bool getChildren(FSList &fslist, ListMode mode = kListDirectoriesOnly, bool hidden = false) const;
/**
* Return a human readable string for this node, usable for display (e.g.
* in the GUI code). Do *not* rely on it being usable for anything else,
* like constructing paths!
+ *
* @return the display name
*/
virtual Common::String getDisplayName() const;