Skip to content
Snippets Groups Projects
Commit 1d5adff0 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard
Browse files

wcmd: mkdir recursive create

In at least both win2k and winxp mkdir from the command prompt can
recursively create full directory paths. This implements that
functionality.
parent d0713d28
No related branches found
No related tags found
No related merge requests found
......@@ -150,11 +150,58 @@ char string[8], outpath[MAX_PATH], inpath[MAX_PATH], *infile;
* WCMD_create_dir
*
* Create a directory.
*
* this works recursivly. so mkdir dir1\dir2\dir3 will create dir1 and dir2 if
* they do not already exist.
*/
BOOL create_full_path(CHAR* path)
{
int len;
CHAR *new_path;
BOOL ret = TRUE;
new_path = HeapAlloc(GetProcessHeap(),0,strlen(path)+1);
strcpy(new_path,path);
while ((len = strlen(new_path)) && new_path[len - 1] == '\\')
new_path[len - 1] = 0;
while (!CreateDirectory(new_path,NULL))
{
CHAR *slash;
DWORD last_error = GetLastError();
if (last_error == ERROR_ALREADY_EXISTS)
break;
if (last_error != ERROR_PATH_NOT_FOUND)
{
ret = FALSE;
break;
}
if (!(slash = strrchr(new_path,'\\')) && ! (slash = strrchr(new_path,'/')))
{
ret = FALSE;
break;
}
len = slash - new_path;
new_path[len] = 0;
if (!create_full_path(new_path))
{
ret = FALSE;
break;
}
new_path[len] = '\\';
}
HeapFree(GetProcessHeap(),0,new_path);
return ret;
}
void WCMD_create_dir (void) {
if (!CreateDirectory (param1, NULL)) WCMD_print_error ();
if (!create_full_path(param1)) WCMD_print_error ();
}
/****************************************************************************
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment