Added FileInfo::getFilenamesSize() and FileInfo::getAllFilenames() methods.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@464 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfb/FileInfo.cxx b/rfb/FileInfo.cxx
index 08e5654..0d770f3 100644
--- a/rfb/FileInfo.cxx
+++ b/rfb/FileInfo.cxx
@@ -223,3 +223,37 @@
}
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;
+}
diff --git a/rfb/FileInfo.h b/rfb/FileInfo.h
index 803a174..c2b63ac 100644
--- a/rfb/FileInfo.h
+++ b/rfb/FileInfo.h
@@ -53,6 +53,9 @@
bool deleteAt(unsigned int number);
unsigned int getNumEntries();
+
+ unsigned int getFilenamesSize();
+ char *getAllFilenames(unsigned int *pFilenameSize);
void sort();
void free();
@@ -63,6 +66,7 @@
private:
FILEINFO *m_pEntries;
unsigned int m_numEntries;
+
};
}