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
diff --git a/rfb_win32/FolderManager.cxx b/rfb_win32/FolderManager.cxx
index 7eec8f9..cbae7d9 100644
--- a/rfb_win32/FolderManager.cxx
+++ b/rfb_win32/FolderManager.cxx
@@ -62,31 +62,47 @@
 
   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;
   }