Dont reset findnext counter if recaching directoy
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@645
This commit is contained in:
		
							parent
							
								
									b9434bbf8b
								
							
						
					
					
						commit
						516251e648
					
				
					 1 changed files with 11 additions and 12 deletions
				
			
		|  | @ -57,6 +57,7 @@ DOS_Drive_Cache::DOS_Drive_Cache(void) | |||
| 	dirBase		= new CFileInfo; | ||||
| 	dirSearch	= 0; | ||||
| 	save_dir	= 0; | ||||
| 	nextEntry	= 0; | ||||
| 	SetDirSort(DIRALPHABETICAL); | ||||
| }; | ||||
| 
 | ||||
|  | @ -65,6 +66,7 @@ DOS_Drive_Cache::DOS_Drive_Cache(const char* path) | |||
| 	dirBase		= new CFileInfo; | ||||
| 	dirSearch	= 0; | ||||
| 	save_dir	= 0; | ||||
| 	nextEntry	= 0; | ||||
| 	SetDirSort(DIRALPHABETICAL); | ||||
| 	SetBaseDir(path); | ||||
| }; | ||||
|  | @ -120,11 +122,6 @@ void DOS_Drive_Cache::AddEntry(const char* path) | |||
| 	CFileInfo* dir = FindDirInfo(path,expand); | ||||
| 	char* pos = strrchr(path,CROSS_FILESPLIT); | ||||
| 
 | ||||
| 	char* name = pos+1; | ||||
| 	if (GetLongName(dir,name)<0) { | ||||
| 		int brk = 0; | ||||
| 	}; | ||||
| 
 | ||||
| 	if (pos) { | ||||
| 		strcpy(file,pos+1);	 | ||||
| 		 | ||||
|  | @ -132,13 +129,12 @@ void DOS_Drive_Cache::AddEntry(const char* path) | |||
| 		// Sort Lists - filelist has to be alphabetically sorted
 | ||||
| 		std::sort(dir->fileList.begin(), dir->fileList.end(), SortByName); | ||||
| 		// Output list - user defined
 | ||||
| /*		switch (sortDirType) {
 | ||||
| 		switch (sortDirType) { | ||||
| 			case ALPHABETICAL		: std::sort(dir->outputList.begin(), dir->outputList.end(), SortByName);		break; | ||||
| 			case DIRALPHABETICAL	: std::sort(dir->outputList.begin(), dir->outputList.end(), SortByDirName);		break; | ||||
| 			case ALPHABETICALREV	: std::sort(dir->outputList.begin(), dir->outputList.end(), SortByNameRev);		break; | ||||
| 			case DIRALPHABETICALREV	: std::sort(dir->outputList.begin(), dir->outputList.end(), SortByDirNameRev);	break; | ||||
| 		};*/ | ||||
| //		nextEntry++;
 | ||||
| 		}; | ||||
| //		LOG_DEBUG("DIR: Added Entry %s",path);
 | ||||
| 	} else { | ||||
| //		LOG_DEBUG("DIR: Error: Failed to add %s",path);	
 | ||||
|  | @ -163,6 +159,7 @@ void DOS_Drive_Cache::CacheOut(const char* path, bool ignoreLastDir) | |||
| 	} else { | ||||
| 		dir = FindDirInfo(path,expand);	 | ||||
| 	} | ||||
| 
 | ||||
| //	LOG_DEBUG("DIR: Caching out %s : dir %s",expand,dir->fullname);
 | ||||
| 	// delete file objects...
 | ||||
| 	for(Bit32u i=0; i<dir->fileList.size(); i++) delete dir->fileList[i]; | ||||
|  | @ -172,7 +169,6 @@ void DOS_Drive_Cache::CacheOut(const char* path, bool ignoreLastDir) | |||
| 	dir->outputList.clear(); | ||||
| 	dir->shortNr = 0; | ||||
| 	save_dir = 0; | ||||
| //	nextEntry = 0;
 | ||||
| }; | ||||
| 
 | ||||
| bool DOS_Drive_Cache::IsCachedIn(CFileInfo* curDir) | ||||
|  | @ -382,7 +378,11 @@ bool DOS_Drive_Cache::OpenDir(const char* path) | |||
| { | ||||
| 	char expand[CROSS_LEN] = {0}; | ||||
| 	CFileInfo* dir = FindDirInfo(path,expand); | ||||
| 	return OpenDir(dir,expand); | ||||
| 	if (OpenDir(dir,expand)) { | ||||
| 		nextEntry = 0; | ||||
| 		return true; | ||||
| 	} | ||||
| 	return false; | ||||
| };	 | ||||
| 
 | ||||
| bool DOS_Drive_Cache::OpenDir(CFileInfo* dir, char* expand) | ||||
|  | @ -396,6 +396,7 @@ bool DOS_Drive_Cache::OpenDir(CFileInfo* dir, char* expand) | |||
| 		// open dir
 | ||||
| 		DIR* dirp = opendir(expand); | ||||
| 		if (dirp) {  | ||||
| 			// Reset it..
 | ||||
| 			dirFirstTime = true; | ||||
| 			closedir(dirp); | ||||
| 			strcpy(dirPath,expand); | ||||
|  | @ -462,8 +463,6 @@ bool DOS_Drive_Cache::ReadDir(struct dirent* &result) | |||
| 		} else { | ||||
| 			dirFirstTime=false; | ||||
| 		} | ||||
| 		// Reset it..
 | ||||
| 		nextEntry = 0; | ||||
| 	}; | ||||
| 	return SetResult(dirSearch, result, nextEntry); | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue