|
|
@@ -26,6 +26,12 @@
|
|
|
# include <sys/stat.h>
|
|
|
#endif
|
|
|
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+cmGeneratedFileStream::cmGeneratedFileStream():
|
|
|
+ cmGeneratedFileStreamBase(), Stream()
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
//----------------------------------------------------------------------------
|
|
|
cmGeneratedFileStream::cmGeneratedFileStream(const char* name, bool quiet):
|
|
|
cmGeneratedFileStreamBase(name),
|
|
|
@@ -50,12 +56,40 @@ cmGeneratedFileStream::~cmGeneratedFileStream()
|
|
|
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)
|
|
|
{
|
|
|
m_CopyIfDifferent = copy_if_different;
|
|
|
}
|
|
|
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+cmGeneratedFileStreamBase::cmGeneratedFileStreamBase():
|
|
|
+ m_Name(),
|
|
|
+ m_TempName(),
|
|
|
+ m_CopyIfDifferent(false),
|
|
|
+ m_Okay(false)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
//----------------------------------------------------------------------------
|
|
|
cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(const char* 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,
|
|
|
const char* newname)
|