diff options
author | Brad King <brad.king@kitware.com> | 2006-05-05 14:29:27 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-05-05 14:29:27 (GMT) |
commit | 523d9ebeed37fe256afb292de2f20f093eb873d1 (patch) | |
tree | fdec5345f35b207887a7d89df101fdb8ce3ef136 | |
parent | 6b9f681f911e15d1930d5c2735a73c95c8f837e5 (diff) | |
download | CMake-523d9ebeed37fe256afb292de2f20f093eb873d1.zip CMake-523d9ebeed37fe256afb292de2f20f093eb873d1.tar.gz CMake-523d9ebeed37fe256afb292de2f20f093eb873d1.tar.bz2 |
ENH: Added always/if-different option to CopyADirectory. Added CopyAFile with the same interface.
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 23 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.hxx.in | 17 |
2 files changed, 34 insertions, 6 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 89ccd6d..1a878d5 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -1637,11 +1637,26 @@ bool SystemTools::CopyFileAlways(const char* source, const char* destination) return true; } +//---------------------------------------------------------------------------- +bool SystemTools::CopyAFile(const char* source, const char* destination, + bool always) +{ + if(always) + { + return SystemTools::CopyFileAlways(source, destination); + } + else + { + return SystemTools::CopyFileIfDifferent(source, destination); + } +} + /** * Copy a directory content from "source" directory to the directory named by * "destination". */ -bool SystemTools::CopyADirectory(const char* source, const char* destination) +bool SystemTools::CopyADirectory(const char* source, const char* destination, + bool always) { Directory dir; dir.Load(source); @@ -1663,14 +1678,16 @@ bool SystemTools::CopyADirectory(const char* source, const char* destination) kwsys_stl::string fullDestPath = destination; fullDestPath += "/"; fullDestPath += dir.GetFile(static_cast<unsigned long>(fileNum)); - if (!SystemTools::CopyADirectory(fullPath.c_str(), fullDestPath.c_str())) + if (!SystemTools::CopyADirectory(fullPath.c_str(), + fullDestPath.c_str(), + always)) { return false; } } else { - if(!SystemTools::CopyFileAlways(fullPath.c_str(), destination)) + if(!SystemTools::CopyAFile(fullPath.c_str(), destination, always)) { return false; } diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in index af26444..dada510 100644 --- a/Source/kwsys/SystemTools.hxx.in +++ b/Source/kwsys/SystemTools.hxx.in @@ -469,10 +469,21 @@ public: static bool CopyFileAlways(const char* source, const char* destination); /** - * Copy content directory to another directory with all files and - * subdirectories + * Copy a file. If the "always" argument is true the file is always + * copied. If it is false, the file is copied only if it is new or + * has changed. */ - static bool CopyADirectory(const char* source, const char* destination); + static bool CopyAFile(const char* source, const char* destination, + bool always = true); + + /** + * Copy content directory to another directory with all files and + * subdirectories. If the "always" argument is true all files are + * always copied. If it is false, only files that have changed or + * are new are copied. + */ + static bool CopyADirectory(const char* source, const char* destination, + bool always = true); /** * Remove a file |