]> source.dussan.org Git - tigervnc.git/commitdiff
Added FileInfo::getFilenamesSize() and FileInfo::getAllFilenames() methods.
authorDennis Syrovatsky <dennis@tightvnc.com>
Sun, 18 Dec 2005 15:08:34 +0000 (15:08 +0000)
committerDennis Syrovatsky <dennis@tightvnc.com>
Sun, 18 Dec 2005 15:08:34 +0000 (15:08 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@464 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfb/FileInfo.cxx
rfb/FileInfo.h

index 08e5654d578c49a56903ff1a648ba6601678d430..0d770f3984cea28782b9d20a90840887800849d5 100644 (file)
@@ -223,3 +223,37 @@ FileInfo::free()
   }
   m_numEntries = 0;
 }
+
+unsigned int
+FileInfo::getFilenamesSize()
+{
+  if (getNumEntries() == 0) return 0;
+
+  unsigned int filenamesSize = 0;
+
+  for (unsigned int i = 0; i < getNumEntries(); i++) {
+    filenamesSize += strlen(getNameAt(i));
+  }
+
+  return filenamesSize;
+}
+
+char *
+FileInfo::getAllFilenames(unsigned int *pFilenameSize)
+{
+  unsigned int filenameSize = getFilenamesSize() + getNumEntries();
+
+  char *pFilenames = new char[filenameSize];
+  unsigned int pos = 0;
+
+  for (unsigned int i = 0; i < getNumEntries(); i++) {
+    char *pName = getNameAt(i);
+    unsigned int len = strlen(pName);
+
+    memcpy((void *)&pFilenames[pos], pName, len + 1);
+    pos += len + 2;
+  }
+
+  *pFilenameSize = filenameSize;
+  return pFilenames;
+}
index 803a174b2f4b3d3bb70fdc8926b3d49bb9ed63bd..c2b63ac5fbe5a30c3f4193ed7870aff7ff468c3f 100644 (file)
@@ -53,6 +53,9 @@ namespace rfb {
     bool deleteAt(unsigned int number);
     
     unsigned int getNumEntries();
+
+    unsigned int getFilenamesSize();
+    char *getAllFilenames(unsigned int *pFilenameSize);
     
     void sort();
     void free();
@@ -63,6 +66,7 @@ namespace rfb {
   private:
     FILEINFO *m_pEntries;
     unsigned int m_numEntries;
+
   };
 }