Browse Source

Add flag to WRITE_FILE to append

Andy Cedilnik 23 years ago
parent
commit
91bd207812
2 changed files with 14 additions and 4 deletions
  1. 10 2
      Source/cmWriteFileCommand.cxx
  2. 4 2
      Source/cmWriteFileCommand.h

+ 10 - 2
Source/cmWriteFileCommand.cxx

@@ -30,14 +30,22 @@ bool cmWriteFileCommand::InitialPass(std::vector<std::string> const& argsIn)
   std::vector<std::string>::const_iterator i = args.begin();
 
   std::string fileName = *i;
+  bool overwrite = true;
   i++;
 
   for(;i != args.end(); ++i)
     {
-    message += *i;
+    if ( *i == "APPEND" )
+      {
+      overwrite = false;
+      }
+    else
+      {
+      message += *i;
+      }
     }
 
-  std::ofstream file(fileName.c_str(), std::ios::app);
+  std::ofstream file(fileName.c_str(), overwrite?std::ios::out : std::ios::app);
   if ( !file )
     {
     cmSystemTools::Error("Internal CMake error when trying to open file: ",

+ 4 - 2
Source/cmWriteFileCommand.h

@@ -60,8 +60,10 @@ public:
   virtual const char* GetFullDocumentation()
     {
     return
-      "WRITE_FILE(filename \"message to write\"...)\n"
-      "The first argument is the file name, the rest of the arguments are messages to write.";
+      "WRITE_FILE(filename \"message to write\"... [APPEND])\n"
+      "The first argument is the file name, the rest of the arguments are "
+      "messages to write. If the argument APPEND is specified, then "
+      "the message will be appended.";
     }
   
   cmTypeMacro(cmWriteFileCommand, cmCommand);