summaryrefslogtreecommitdiffstats
path: root/rfb_win32
diff options
context:
space:
mode:
authorDennis Syrovatsky <dennis@tightvnc.com>2005-12-05 09:31:28 +0000
committerDennis Syrovatsky <dennis@tightvnc.com>2005-12-05 09:31:28 +0000
commit29440e80d7ae0eb8753e2d2fc8a8488cc93e90ab (patch)
tree78989183767c8ab48ee2231cd34fbf198e8f35ec /rfb_win32
parentf891ccd4f232f1a594542966699e9b5db2cc87d6 (diff)
downloadtigervnc-29440e80d7ae0eb8753e2d2fc8a8488cc93e90ab.tar.gz
tigervnc-29440e80d7ae0eb8753e2d2fc8a8488cc93e90ab.zip
Added new methods to the class FolderManager for delete operation.
Added delete queue and some methods for making delete operation to the FileTransfer class. Code improvements. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@432 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'rfb_win32')
-rw-r--r--rfb_win32/FolderManager.cxx38
-rw-r--r--rfb_win32/FolderManager.h3
2 files changed, 30 insertions, 11 deletions
diff --git a/rfb_win32/FolderManager.cxx b/rfb_win32/FolderManager.cxx
index 7eec8f93..cbae7d90 100644
--- a/rfb_win32/FolderManager.cxx
+++ b/rfb_win32/FolderManager.cxx
@@ -62,31 +62,47 @@ FolderManager::deleteIt(char *pFullPath)
fileInfo.add(&FIStruct);
- unsigned int num = fileInfo.getNumEntries();
+ return deleteIt(&fileInfo);
+}
+
+bool
+FolderManager::deleteIt(char *pPrefix, FileInfo *pFI)
+{
+ char buf[FT_FILENAME_SIZE];
+ for (unsigned int i = 0; i < pFI->getNumEntries(); i++) {
+ sprintf(buf, "%s\\%s", pPrefix, pFI->getNameAt(i));
+ pFI->setNameAt(i,buf);
+ }
+ return deleteIt(pFI);
+}
+
+bool
+FolderManager::deleteIt(FileInfo *pFI)
+{
+ unsigned int num = pFI->getNumEntries();
unsigned int last = num - 1;
while (num > 0) {
- if (fileInfo.getFlagsAt(last) & FT_ATTR_DIR) {
- if (RemoveDirectory(fileInfo.getNameAt(last)) == 0) {
+ if (pFI->getFlagsAt(last) & FT_ATTR_DIR) {
+ if (RemoveDirectory(pFI->getNameAt(last)) == 0) {
if (GetLastError() == ERROR_DIR_NOT_EMPTY) {
- if (!getFolderInfoWithPrefix(fileInfo.getNameAt(last), &fileInfo)) {
- fileInfo.free();
+ if (!getFolderInfoWithPrefix(pFI->getNameAt(last), pFI)) {
+ pFI->free();
return false;
}
}
} else {
- fileInfo.deleteAt(last);
+ pFI->deleteAt(last);
}
} else {
- if (DeleteFile(fileInfo.getNameAt(last)) == 0) {
- fileInfo.free();
+ if (DeleteFile(pFI->getNameAt(last)) == 0) {
+ pFI->free();
return false;
} else {
- fileInfo.deleteAt(last);
+ pFI->deleteAt(last);
}
}
-
- num = fileInfo.getNumEntries();
+ num = pFI->getNumEntries();
last = num - 1;
}
diff --git a/rfb_win32/FolderManager.h b/rfb_win32/FolderManager.h
index c7c086b2..55f352d1 100644
--- a/rfb_win32/FolderManager.h
+++ b/rfb_win32/FolderManager.h
@@ -39,7 +39,10 @@ namespace rfb {
bool createDir(char *pFullPath);
bool renameIt(char *pOldName, char *pNewName);
+
+ bool deleteIt(char *pPrefix, FileInfo *pFI);
bool deleteIt(char *pFullPath);
+ bool deleteIt(FileInfo *pFI);
bool getInfo(char *pFullPath, FILEINFO *pFIStruct);