From 34c95efc05efeddb44f0445a9e7c8913a78ed7ae Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Fri, 2 May 2003 11:33:35 +0000 Subject: [PATCH] fixed return value of findfirst Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@983 --- src/dos/dos_files.cpp | 3 +-- src/dos/drive_local.cpp | 7 ++++++- src/dos/drive_virtual.cpp | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index f0d7f086..fcb583b0 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -206,14 +206,13 @@ bool DOS_FindFirst(char * search,Bit16u attr) { } dta.SetupSearch(drive,(Bit8u)attr,pattern); if (Drives[drive]->FindFirst(dir,dta)) return true; - DOS_SetError(DOSERR_NO_MORE_FILES); + return false; } bool DOS_FindNext(void) { DOS_DTA dta(dos.dta); if (Drives[dta.GetSearchDrive()]->FindNext(dta)) return true; - DOS_SetError(DOSERR_NO_MORE_FILES); return false; } diff --git a/src/dos/drive_local.cpp b/src/dos/drive_local.cpp index 907d6ecf..3e3a3ebf 100644 --- a/src/dos/drive_local.cpp +++ b/src/dos/drive_local.cpp @@ -110,7 +110,11 @@ bool localDrive::FindFirst(char * _dir,DOS_DTA & dta) { if (tempDir[strlen(tempDir)-1]!=CROSS_FILESPLIT) strcat(tempDir,end); Bit16u id; - if (!dirCache.OpenDir(tempDir,id)) return false; + if (!dirCache.OpenDir(tempDir,id)) + { + DOS_SetError(DOSERR_PATH_NOT_FOUND); + return false; + } strcpy(srchInfo[id].srch_dir,tempDir); dta.SetDirID(id); @@ -139,6 +143,7 @@ bool localDrive::FindNext(DOS_DTA & dta) { again: if (!dirCache.ReadDir(id,dir_ent)) { + DOS_SetError(DOSERR_NO_MORE_FILES); return false; } diff --git a/src/dos/drive_virtual.cpp b/src/dos/drive_virtual.cpp index dd080048..3d0cb9de 100644 --- a/src/dos/drive_virtual.cpp +++ b/src/dos/drive_virtual.cpp @@ -200,6 +200,7 @@ bool Virtual_Drive::FindNext(DOS_DTA & dta) { } search_file=search_file->next; } + DOS_SetError(DOSERR_NO_MORE_FILES); return false; }