summaryrefslogtreecommitdiffstats
path: root/Source/CPack/cmCPackComponentGroup.cxx
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2008-07-09 17:38:56 (GMT)
committerDavid Cole <david.cole@kitware.com>2008-07-09 17:38:56 (GMT)
commit71f61636b6abfe5f243374b5575019098418b4c6 (patch)
treed6ca84ec6701ed19ae98b8dfbeb321aafa81495e /Source/CPack/cmCPackComponentGroup.cxx
parent3366e6c2cd8bb2d9e30d2deb5637c840d52221a3 (diff)
downloadCMake-71f61636b6abfe5f243374b5575019098418b4c6.zip
CMake-71f61636b6abfe5f243374b5575019098418b4c6.tar.gz
CMake-71f61636b6abfe5f243374b5575019098418b4c6.tar.bz2
ENH: One more patch from Doug Gregor including PackageMaker functionality for componentized-for-the-end-user and download-some-bit-on-demand installers.
Diffstat (limited to 'Source/CPack/cmCPackComponentGroup.cxx')
-rw-r--r--Source/CPack/cmCPackComponentGroup.cxx49
1 files changed, 49 insertions, 0 deletions
diff --git a/Source/CPack/cmCPackComponentGroup.cxx b/Source/CPack/cmCPackComponentGroup.cxx
new file mode 100644
index 0000000..63ad9d7
--- /dev/null
+++ b/Source/CPack/cmCPackComponentGroup.cxx
@@ -0,0 +1,49 @@
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
+ See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include "cmCPackComponentGroup.h"
+#include "cmSystemTools.h"
+#include <vector>
+#include <string>
+
+//----------------------------------------------------------------------
+unsigned long cmCPackComponent::GetInstalledSize(const char* installDir) const
+{
+ if (this->TotalSize != 0)
+ {
+ return this->TotalSize;
+ }
+
+ std::vector<std::string>::const_iterator fileIt;
+ for (fileIt = this->Files.begin(); fileIt != this->Files.end(); ++fileIt)
+ {
+ std::string path = installDir;
+ path += '/';
+ path += *fileIt;
+ this->TotalSize += cmSystemTools::FileLength(path.c_str());
+ }
+
+ return this->TotalSize;
+}
+
+//----------------------------------------------------------------------
+unsigned long
+cmCPackComponent::GetInstalledSizeInKbytes(const char* installDir) const
+{
+ unsigned long result = (GetInstalledSize(installDir) + 512) / 1024;
+ return result? result : 1;
+}