[Scummvm-cvs-logs] CVS: scummvm/backends/fs/morphos abox-fs.cpp,1.3,1.4

Ruediger Hanke tomjoad at users.sourceforge.net
Wed Nov 20 05:26:04 CET 2002


Update of /cvsroot/scummvm/scummvm/backends/fs/morphos
In directory sc8-pr-cvs1:/tmp/cvs-serv7636

Modified Files:
	abox-fs.cpp 
Log Message:
Implemented mode parameter for listDir()

Index: abox-fs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/fs/morphos/abox-fs.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- abox-fs.cpp	19 Nov 2002 13:44:28 -0000	1.3
+++ abox-fs.cpp	20 Nov 2002 13:25:22 -0000	1.4
@@ -50,7 +50,7 @@
 		virtual bool isDirectory() const { return _isDirectory; }
 		virtual String path() const { return _path; }
 
-		virtual FSList *listDir() const;
+		virtual FSList *listDir(ListMode mode = kListDirectoriesOnly) const;
 		static  FSList *listRoot();
 		virtual FilesystemNode *parent() const;
 		virtual FilesystemNode *clone() const { return new ABoxFilesystemNode(this); }
@@ -137,10 +137,10 @@
 	}
 }
 
-FSList *ABoxFilesystemNode::listDir() const
+FSList *ABoxFilesystemNode::listDir(ListMode mode) const
 {
 	FSList *myList = new FSList();
-	
+        
 	if (!_isValid)
 		error("listDir() called on invalid node");
 
@@ -170,19 +170,23 @@
 			String full_path;
 			BPTR lock;
 
-			full_path = _path;
-			full_path += fib->fib_FileName;
-			lock = Lock(full_path.c_str(), SHARED_LOCK);
-			if (lock)
+			if ((fib->fib_EntryType > 0 && (mode & kListDirectoriesOnly)) ||
+				 (fib->fib_EntryType < 0 && (mode & kListFilesOnly)))
 			{
-				entry = new ABoxFilesystemNode(lock);
-				if (entry)
+				full_path = _path;
+				full_path += fib->fib_FileName;
+				lock = Lock(full_path.c_str(), SHARED_LOCK);
+				if (lock)
 				{
-					if (entry->isValid())
-						myList->push_back(*entry);
-					delete entry;
+					entry = new ABoxFilesystemNode(lock);
+					if (entry)
+					{
+						if (entry->isValid())
+							myList->push_back(*entry);
+						delete entry;
+					}
+					UnLock(lock);
 				}
-				UnLock(lock);
 			}
 		}
 
@@ -237,9 +241,9 @@
 	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
+		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;
@@ -272,4 +276,5 @@
 }
 
 #endif // defined(__MORPHOS__)
+
 





More information about the Scummvm-git-logs mailing list