|
@ -26,6 +26,12 @@ |
|
|
# include <sys/stat.h>
|
|
|
# include <sys/stat.h>
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
cmGeneratedFileStream::cmGeneratedFileStream(): |
|
|
|
|
|
cmGeneratedFileStreamBase(), Stream() |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
//----------------------------------------------------------------------------
|
|
|
cmGeneratedFileStream::cmGeneratedFileStream(const char* name, bool quiet): |
|
|
cmGeneratedFileStream::cmGeneratedFileStream(const char* name, bool quiet): |
|
|
cmGeneratedFileStreamBase(name), |
|
|
cmGeneratedFileStreamBase(name), |
|
@ -50,12 +56,40 @@ cmGeneratedFileStream::~cmGeneratedFileStream() |
|
|
m_Okay = (*this)?true:false; |
|
|
m_Okay = (*this)?true:false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
cmGeneratedFileStream& |
|
|
|
|
|
cmGeneratedFileStream::Open(const char* name, bool quiet) |
|
|
|
|
|
{ |
|
|
|
|
|
// Store the file name and construct the temporary file name.
|
|
|
|
|
|
this->cmGeneratedFileStreamBase::Open(name); |
|
|
|
|
|
|
|
|
|
|
|
// Open the temporary output file.
|
|
|
|
|
|
this->Stream::open(m_TempName.c_str()); |
|
|
|
|
|
|
|
|
|
|
|
// Check if the file opened.
|
|
|
|
|
|
if(!*this && !quiet) |
|
|
|
|
|
{ |
|
|
|
|
|
cmSystemTools::Error("Cannot open file for write: ", m_TempName.c_str()); |
|
|
|
|
|
cmSystemTools::ReportLastSystemError(""); |
|
|
|
|
|
} |
|
|
|
|
|
return *this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
//----------------------------------------------------------------------------
|
|
|
void cmGeneratedFileStream::SetCopyIfDifferent(bool copy_if_different) |
|
|
void cmGeneratedFileStream::SetCopyIfDifferent(bool copy_if_different) |
|
|
{ |
|
|
{ |
|
|
m_CopyIfDifferent = copy_if_different; |
|
|
m_CopyIfDifferent = copy_if_different; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(): |
|
|
|
|
|
m_Name(), |
|
|
|
|
|
m_TempName(), |
|
|
|
|
|
m_CopyIfDifferent(false), |
|
|
|
|
|
m_Okay(false) |
|
|
|
|
|
{ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
//----------------------------------------------------------------------------
|
|
|
cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(const char* name): |
|
|
cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(const char* name): |
|
|
m_Name(name), |
|
|
m_Name(name), |
|
@ -91,6 +125,20 @@ cmGeneratedFileStreamBase::~cmGeneratedFileStreamBase() |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
void cmGeneratedFileStreamBase::Open(const char* name) |
|
|
|
|
|
{ |
|
|
|
|
|
// Save the original name of the file.
|
|
|
|
|
|
m_Name = name; |
|
|
|
|
|
|
|
|
|
|
|
// Create the name of the temporary file.
|
|
|
|
|
|
m_TempName = name; |
|
|
|
|
|
m_TempName += ".tmp"; |
|
|
|
|
|
|
|
|
|
|
|
// Make sure the temporary file that will be used is not present.
|
|
|
|
|
|
cmSystemTools::RemoveFile(m_TempName.c_str()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
//----------------------------------------------------------------------------
|
|
|
int cmGeneratedFileStreamBase::RenameFile(const char* oldname, |
|
|
int cmGeneratedFileStreamBase::RenameFile(const char* oldname, |
|
|
const char* newname) |
|
|
const char* newname) |
|
|