From d5a05536fc53b3ed308d02c02cafecb6cd3f6a48 Mon Sep 17 00:00:00 2001 From: Dennis Syrovatsky Date: Sun, 18 Dec 2005 15:08:34 +0000 Subject: [PATCH] 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 --- rfb/FileInfo.cxx | 34 ++++++++++++++++++++++++++++++++++ rfb/FileInfo.h | 4 ++++ 2 files changed, 38 insertions(+) diff --git a/rfb/FileInfo.cxx b/rfb/FileInfo.cxx index 08e5654d..0d770f39 100644 --- a/rfb/FileInfo.cxx +++ b/rfb/FileInfo.cxx @@ -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; +} diff --git a/rfb/FileInfo.h b/rfb/FileInfo.h index 803a174b..c2b63ac5 100644 --- a/rfb/FileInfo.h +++ b/rfb/FileInfo.h @@ -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; + }; } -- 2.39.5