ENH: Detect if there were problems writing file

This commit is contained in:
Andy Cedilnik 2004-05-27 12:53:15 -04:00
parent 757cec6caa
commit d1470b7d7c
1 changed files with 11 additions and 4 deletions

View File

@ -2310,6 +2310,7 @@ void cmMakefile::ConfigureString(const std::string& input,
int cmMakefile::ConfigureFile(const char* infile, const char* outfile, int cmMakefile::ConfigureFile(const char* infile, const char* outfile,
bool copyonly, bool atOnly, bool escapeQuotes) bool copyonly, bool atOnly, bool escapeQuotes)
{ {
int res = 1;
if ( !cmSystemTools::FileExists(infile) ) if ( !cmSystemTools::FileExists(infile) )
{ {
cmSystemTools::Error("File ", infile, " does not exist."); cmSystemTools::Error("File ", infile, " does not exist.");
@ -2369,12 +2370,18 @@ int cmMakefile::ConfigureFile(const char* infile, const char* outfile,
// close the files before attempting to copy // close the files before attempting to copy
fin.close(); fin.close();
fout.close(); fout.close();
cmSystemTools::CopyFileIfDifferent(tempOutputFile.c_str(), if ( !cmSystemTools::CopyFileIfDifferent(tempOutputFile.c_str(),
soutfile.c_str()); soutfile.c_str()) )
cmSystemTools::RemoveFile(tempOutputFile.c_str()); {
res = 0;
}
else
{
cmSystemTools::SetPermissions(soutfile.c_str(), perm); cmSystemTools::SetPermissions(soutfile.c_str(), perm);
} }
return 1; cmSystemTools::RemoveFile(tempOutputFile.c_str());
}
return res;
} }
void cmMakefile::AddWrittenFile(const char* file) void cmMakefile::AddWrittenFile(const char* file)