ENH: Added always/if-different option to CopyADirectory. Added CopyAFile with the same interface.
This commit is contained in:
parent
6b9f681f91
commit
523d9ebeed
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue