Commit 74f583ed authored by Alexandre Julliard's avatar Alexandre Julliard

DefineDosDeviceW: implemented the DDD_REMOVE_DEFINITION flag.

parent 11586214
......@@ -936,6 +936,8 @@ BOOL WINAPI DefineDosDeviceW( DWORD flags, LPCWSTR devname, LPCWSTR targetpath )
BOOL ret = FALSE;
char *path = NULL, *target, *p;
if (!(flags & DDD_REMOVE_DEFINITION))
{
if (!(flags & DDD_RAW_TARGET_PATH))
{
FIXME( "(0x%08lx,%s,%s) DDD_RAW_TARGET_PATH flag not set, not supported yet\n",
......@@ -955,6 +957,8 @@ BOOL WINAPI DefineDosDeviceW( DWORD flags, LPCWSTR devname, LPCWSTR targetpath )
SetLastError( ERROR_NOT_ENOUGH_MEMORY );
return FALSE;
}
}
else target = NULL;
/* first check for a DOS device */
......@@ -974,13 +978,22 @@ BOOL WINAPI DefineDosDeviceW( DWORD flags, LPCWSTR devname, LPCWSTR targetpath )
if (path)
{
if (target)
{
TRACE( "creating symlink %s -> %s\n", path, target );
unlink( path );
if (!symlink( target, path )) ret = TRUE;
else FILE_SetDosError();
}
else
{
TRACE( "removing symlink %s\n", path );
if (!unlink( path )) ret = TRUE;
else FILE_SetDosError();
}
HeapFree( GetProcessHeap(), 0, path );
}
HeapFree( GetProcessHeap(), 0, target );
if (target) HeapFree( GetProcessHeap(), 0, target );
return ret;
}
......
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