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

Ruediger Hanke tomjoad at users.sourceforge.net
Fri Nov 15 08:04:05 CET 2002


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

Modified Files:
	abox-fs.cpp 
Log Message:
Fixes ...

Index: abox-fs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/fs/morphos/abox-fs.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- abox-fs.cpp	15 Nov 2002 15:08:29 -0000	1.1
+++ abox-fs.cpp	15 Nov 2002 16:03:42 -0000	1.2
@@ -64,7 +64,7 @@
 
 ABoxFilesystemNode::ABoxFilesystemNode()
 {
-	_displayName = "All Drives";
+	_displayName = "Mounted Volumes";
 	_isValid = true;
 	_isDirectory = true;
 	_path = "";
@@ -108,6 +108,8 @@
 		_isDirectory = fib->fib_EntryType > 0;
 		if (_isDirectory)
 		{
+			if (fib->fib_EntryType != ST_ROOT)
+				_path += "/";
 			_lock = DupLock(lock);
 			_isValid = (_lock != NULL);
 		}
@@ -164,14 +166,24 @@
 	{
 		while (ExNext(_lock, fib) != DOSFALSE)
 		{
-			ABoxFilesystemNode entry;
-			entry._displayName = fib->fib_FileName;
-			entry._isDirectory = fib->fib_EntryType > 0;
-			entry._path = _path;
-			entry._path += fib->fib_FileName;
-			if (entry._isDirectory)
-				entry._path += "/";
-			myList->push_back(entry);
+			ABoxFilesystemNode *entry;
+			String full_path;
+			BPTR lock;
+
+			full_path = _path;
+			full_path += fib->fib_FileName;
+			lock = Lock(full_path.c_str(), SHARED_LOCK);
+			if (lock)
+			{
+				entry = new ABoxFilesystemNode(lock);
+				if (entry)
+				{
+					if (entry->isValid())
+						myList->push_back(*entry);
+					delete entry;
+				}
+				UnLock(lock);
+			}
 		}
 
 		if (IoErr() != ERROR_NO_MORE_ENTRIES)
@@ -242,8 +254,12 @@
 			{
 				sprintf(name, "%s (%s)", volume_name, device_name);
 				entry = new ABoxFilesystemNode(volume_lock, name);
-				if (entry->isValid())
-					myList->push_back(*entry);
+				if (entry)
+				{
+					if (entry->isValid())
+						myList->push_back(*entry);
+					delete entry;
+				}
 				UnLock(volume_lock);
 			}
 		}





More information about the Scummvm-git-logs mailing list