VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/Dlgcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/Dlgcode.c')
-rw-r--r--src/Common/Dlgcode.c23
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;
+}