diff options
Diffstat (limited to 'src/Common/Dlgcode.c')
-rw-r--r-- | src/Common/Dlgcode.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c index ae6fcd2d..04fec471 100644 --- a/src/Common/Dlgcode.c +++ b/src/Common/Dlgcode.c @@ -12203,4 +12203,25 @@ BOOL RaisePrivileges(void) SetLastError (dwLastError); return bRet; -}
\ No newline at end of file +} + +BOOL DeleteDirectory (const wchar_t* szDirName) +{ + BOOL bStatus = RemoveDirectory (szDirName); + if (!bStatus) + { + /* force removal of the non empty directory */ + wchar_t szOpPath[TC_MAX_PATH + 1] = {0}; + SHFILEOPSTRUCTW op; + + StringCchCopyW(szOpPath, ARRAYSIZE(szOpPath)-1, szDirName); + ZeroMemory(&op, sizeof(op)); + op.wFunc = FO_DELETE; + op.pFrom = szOpPath; + op.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR; + + if ((0 == SHFileOperation(&op)) && (!op.fAnyOperationsAborted)) + bStatus = TRUE; + } + return bStatus; +} |