diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/database/database.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/modules/database/database.cpp b/src/modules/database/database.cpp index 0b1b8f8b06..e9f56bac81 100644 --- a/src/modules/database/database.cpp +++ b/src/modules/database/database.cpp @@ -247,16 +247,22 @@ static int getProfile1(TCHAR *szProfile, size_t cch, TCHAR *profiledir, BOOL * n if (hFind != INVALID_HANDLE_VALUE) {
do {
// make sure the first hit is actually a *.dat file
- if ((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && _tcscmp(ffd.cFileName, _T(".")) && _tcscmp(ffd.cFileName, _T(".."))) {
- TCHAR newProfile[MAX_PATH];
- mir_sntprintf(newProfile, MAX_PATH, _T("%s\\%s\\%s.dat"), profiledir, ffd.cFileName, ffd.cFileName);
- if (_taccess(newProfile, 0) != 0)
- continue;
+ if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) || !_tcscmp(ffd.cFileName, _T(".")) || !_tcscmp(ffd.cFileName, _T("..")))
+ continue;
+ TCHAR newProfile[MAX_PATH];
+ mir_sntprintf(newProfile, MAX_PATH, _T("%s\\%s\\%s.dat"), profiledir, ffd.cFileName, ffd.cFileName);
+ if (_taccess(newProfile, 0) != 0)
+ continue;
+
+ switch (touchDatabase(newProfile, NULL)) {
+ case 0:
+ if (++found == 1 && nodprof)
+ _tcsncpy_s(szProfile, cch, newProfile, _TRUNCATE);
+
+ case EGROKPRF_OBSOLETE:
allfound++;
- if (touchDatabase(newProfile, NULL) == 0)
- if (++found == 1 && nodprof)
- _tcsncpy_s(szProfile, cch, newProfile, _TRUNCATE);
+ break;
}
}
while (FindNextFile(hFind, &ffd));
|