Wolfgang Schwotzer wolfgang.schwotzer@gmx.net writes:
@@ -91,13 +91,28 @@ */ BOOL WINAPI MakeSureDirectoryPathExists(LPCSTR DirPath) {
- if (CreateDirectoryA(DirPath, NULL)) return TRUE;
- if (GetLastError() == ERROR_ALREADY_EXISTS)
- char path[MAX_PATH];
- const char *p = DirPath;
- int n;
- if (strchr(p, ':') != NULL)
p = strchr(p, ':');
- while ((p = strchr(p, '\')) != NULL) {
SetLastError(ERROR_SUCCESS);
return TRUE;
n = p - DirPath + 1;
strncpy(path, DirPath, n);
path[n] = '\0';
if( !CreateDirectoryA(path, NULL) &&
(GetLastError() != ERROR_ACCESS_DENIED) &&
(GetLastError() != ERROR_ALREADY_EXISTS))
return FALSE;
}p++;
- return FALSE;
- if (GetLastError() == ERROR_ACCESS_DENIED ||
(GetLastError() == ERROR_ALREADY_EXISTS))
SetLastError(ERROR_SUCCESS);
- return TRUE;
I don't think you want to simply ignore ERROR_ACCESS_DENIED. You should fix your algorithm to not try to create the drive root and then ignore only ERROR_ALREADY_EXISTS.