Commit 0d4f4d90 authored by Wolfgang Schwotzer's avatar Wolfgang Schwotzer Committed by Alexandre Julliard

MakeSureDirectoryPathExists: Recursively create path up to last '\\'.

parent ed19983d
...@@ -91,13 +91,26 @@ HANDLE WINAPI FindExecutableImage(PSTR FileName, PSTR SymbolPath, PSTR ImageFile ...@@ -91,13 +91,26 @@ HANDLE WINAPI FindExecutableImage(PSTR FileName, PSTR SymbolPath, PSTR ImageFile
*/ */
BOOL WINAPI MakeSureDirectoryPathExists(LPCSTR DirPath) BOOL WINAPI MakeSureDirectoryPathExists(LPCSTR DirPath)
{ {
if (CreateDirectoryA(DirPath, NULL)) return TRUE; char path[MAX_PATH];
if (GetLastError() == ERROR_ALREADY_EXISTS) const char *p = DirPath;
int n;
if (p[0] && p[1] == ':') p += 2;
while (*p == '\\') p++; /* skip drive root */
while ((p = strchr(p, '\\')) != NULL)
{ {
SetLastError(ERROR_SUCCESS); n = p - DirPath + 1;
return TRUE; memcpy(path, DirPath, n);
path[n] = '\0';
if( !CreateDirectoryA(path, NULL) &&
(GetLastError() != ERROR_ALREADY_EXISTS))
return FALSE;
p++;
} }
return FALSE; if (GetLastError() == ERROR_ALREADY_EXISTS)
SetLastError(ERROR_SUCCESS);
return TRUE;
} }
/****************************************************************** /******************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment