diff options
| author | Eugene Sandulenko | 2006-04-14 01:06:08 +0000 | 
|---|---|---|
| committer | Eugene Sandulenko | 2006-04-14 01:06:08 +0000 | 
| commit | 065dcf565369389c4049d5ab6f28e87379f7af7a (patch) | |
| tree | 8fdc9817c64d6c3f21b0c330f0f5c80f48593a1e /backends/fs | |
| parent | 78cc6e4eadc4a0866c9a8319b0b7ff6faaa9e7a7 (diff) | |
| download | scummvm-rg350-065dcf565369389c4049d5ab6f28e87379f7af7a.tar.gz scummvm-rg350-065dcf565369389c4049d5ab6f28e87379f7af7a.tar.bz2 scummvm-rg350-065dcf565369389c4049d5ab6f28e87379f7af7a.zip | |
Part of patch #1467193: "AmigaOS changes":
- Filesystem errors are now more detailed
- casting problems are hopefully gone
- some comments added in amigaos4-fs.cpp
svn-id: r21861
Diffstat (limited to 'backends/fs')
| -rw-r--r-- | backends/fs/amigaos4/amigaos4-fs.cpp | 44 | 
1 files changed, 22 insertions, 22 deletions
| diff --git a/backends/fs/amigaos4/amigaos4-fs.cpp b/backends/fs/amigaos4/amigaos4-fs.cpp index e15817699c..f90e6ea6a9 100644 --- a/backends/fs/amigaos4/amigaos4-fs.cpp +++ b/backends/fs/amigaos4/amigaos4-fs.cpp @@ -39,8 +39,8 @@  #include "base/engine.h"  #include "backends/fs/fs.h" -#define ENTER() /* debug(6, "Enter\n") */ -#define LEAVE() /* debug(6, "Leave\n") */ +#define ENTER() /* debug(6, "Enter") */ +#define LEAVE() /* debug(6, "Leave") */  const uint32 kExAllBufferSize = 40960; // TODO: is this okay for sure? @@ -120,12 +120,12 @@ AmigaOSFilesystemNode::AmigaOSFilesystemNode(const String &p) {  	struct FileInfoBlock *fib = (struct FileInfoBlock *)IDOS->AllocDosObject(DOS_FIB, NULL);  	if (!fib) { -		debug(6, "fib == 0\n"); +		debug(6, "FileInfoBlock is NULL");  		LEAVE();  		return;  	} -	BPTR pLock = IDOS->Lock( (char *)_sPath.c_str(), SHARED_LOCK); +	BPTR pLock = IDOS->Lock((STRPTR)_sPath.c_str(), SHARED_LOCK);  	if (pLock) {  		if (IDOS->Examine(pLock, fib) != DOSFALSE) {  			if (fib->fib_EntryType > 0) @@ -155,16 +155,16 @@ AmigaOSFilesystemNode::AmigaOSFilesystemNode(BPTR pLock, const char *pDisplayNam  	while (1) {  		char *name = new char[bufSize]; -		if (IDOS->NameFromLock(pLock, name, bufSize) != DOSFALSE) { +		if (IDOS->NameFromLock(pLock, (STRPTR)name, bufSize) != DOSFALSE) {  			_sPath = name; -			_sDisplayName = pDisplayName ? pDisplayName : IDOS->FilePart(name); +			_sDisplayName = pDisplayName ? pDisplayName : IDOS->FilePart((STRPTR)name);  			delete [] name;  			break;  		}  		if (IDOS->IoErr() != ERROR_LINE_TOO_LONG) {  			_bIsValid = false; -			debug(6, "Error\n"); +			debug(6, "IoErr() != ERROR_LINE_TOO_LONG");  			LEAVE();  			delete [] name;  			return; @@ -177,7 +177,7 @@ AmigaOSFilesystemNode::AmigaOSFilesystemNode(BPTR pLock, const char *pDisplayNam  	struct FileInfoBlock *fib = (struct	FileInfoBlock *)IDOS->AllocDosObject(DOS_FIB, NULL);  	if (!fib) { -		debug(6, "fib == 0\n"); +		debug(6, "FileInfoBlock is NULL");  		LEAVE();  		return;  	} @@ -226,25 +226,23 @@ FSList AmigaOSFilesystemNode::listDir(ListMode mode) const {  	FSList myList;  	if (!_bIsValid) { -		debug(6, "Invalid node\n"); +		debug(6, "Invalid node");  		LEAVE();  		return myList; // Empty list  	}  	if (!_bIsDirectory) { -		debug(6, "Not a directory\n"); +		debug(6, "Not a directory");  		LEAVE();  		return myList; // Empty list  	}  	if (_pFileLock == 0) { -		debug(6, "Root node\n"); +		debug(6, "Root node");  		LEAVE();  		return listVolumes();  	} -	//FSList *myList = new FSList(); -  	struct ExAllControl *eac = (struct ExAllControl *)IDOS->AllocDosObject(DOS_EXALLCONTROL, 0);  	if (eac) {  		struct ExAllData *data = (struct ExAllData *)IExec->AllocVec(kExAllBufferSize, MEMF_ANY); @@ -252,23 +250,25 @@ FSList AmigaOSFilesystemNode::listDir(ListMode mode) const {  			BOOL bExMore;  			eac->eac_LastKey = 0;  			do { +				// Examine directory  				bExMore = IDOS->ExAll(_pFileLock, data,	kExAllBufferSize, ED_TYPE, eac);  				LONG error = IDOS->IoErr();  				if (!bExMore && error != ERROR_NO_MORE_ENTRIES) -					break; +					break; // Abnormal failure  				if (eac->eac_Entries ==	0) -					continue; +					continue; // Normal failure, no entries  				struct ExAllData *ead = data;  				do { -					if ((mode == kListAll) || (EAD_IS_DRAWER(ead) && (mode == kListDirectoriesOnly)) || +					if ((mode == kListAll) || +						(EAD_IS_DRAWER(ead) && (mode == kListDirectoriesOnly)) ||  						(EAD_IS_FILE(ead) && (mode == kListFilesOnly))) {  						String full_path = _sPath;  						full_path += (char*)ead->ed_Name; -						BPTR lock = IDOS->Lock((char *)full_path.c_str(), SHARED_LOCK); +						BPTR lock = IDOS->Lock((STRPTR)full_path.c_str(), SHARED_LOCK);  						if (lock) {  							AmigaOSFilesystemNode *entry = new AmigaOSFilesystemNode(lock, (char *)ead->ed_Name);  							if (entry) { @@ -298,13 +298,13 @@ AbstractFilesystemNode *AmigaOSFilesystemNode::parent() const {  	ENTER();  	if (!_bIsDirectory) { -		debug(6, "No directory\n"); +		debug(6, "Not a directory");  		LEAVE();  		return 0;  	}  	if (_pFileLock == 0) { -		debug(6, "Root node\n"); +		debug(6, "Root node");  		LEAVE();  		return new AmigaOSFilesystemNode(*this);  	} @@ -325,7 +325,7 @@ AbstractFilesystemNode *AmigaOSFilesystemNode::parent() const {  FSList AmigaOSFilesystemNode::listVolumes(void)	const {  	ENTER(); -	//FSList *myList = new FSList(); +  	FSList myList;  	const uint32 kLockFlags = LDF_READ | LDF_VOLUMES; @@ -333,7 +333,7 @@ FSList AmigaOSFilesystemNode::listVolumes(void)	const {  	struct DosList *dosList = IDOS->LockDosList(kLockFlags);  	if (!dosList) { -		debug(6, "Cannot lock dos list\n"); +		debug(6, "Cannot lock the DOS list");  		LEAVE();  		return myList;  	} @@ -350,7 +350,7 @@ FSList AmigaOSFilesystemNode::listVolumes(void)	const {  			strcpy(name, volName);  			strcat(name, ":"); -			BPTR volumeLock = IDOS->Lock(name, SHARED_LOCK); +			BPTR volumeLock = IDOS->Lock((STRPTR)name, SHARED_LOCK);  			if (volumeLock) {  				sprintf(name, "%s (%s)", volName, devName);  				AmigaOSFilesystemNode *entry = new AmigaOSFilesystemNode(volumeLock, name); | 
