diff options
author | Dennis Syrovatsky <dennis@tightvnc.com> | 2005-12-05 09:31:28 +0000 |
---|---|---|
committer | Dennis Syrovatsky <dennis@tightvnc.com> | 2005-12-05 09:31:28 +0000 |
commit | 29440e80d7ae0eb8753e2d2fc8a8488cc93e90ab (patch) | |
tree | 78989183767c8ab48ee2231cd34fbf198e8f35ec /rfb_win32 | |
parent | f891ccd4f232f1a594542966699e9b5db2cc87d6 (diff) | |
download | tigervnc-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.cxx | 38 | ||||
-rw-r--r-- | rfb_win32/FolderManager.h | 3 |
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); |