diff options
author | Brad King <brad.king@kitware.com> | 2001-07-23 15:53:52 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2001-07-23 15:53:52 (GMT) |
commit | 572ecc9b8ac38f2b1c34577f53af7d3fcd67f6a5 (patch) | |
tree | 59d81e2aac24b48fd9bf0373055b0ef6b39e2b81 | |
parent | dc87e1906d94594b1957c56e4785c184d1743e81 (diff) | |
download | CMake-572ecc9b8ac38f2b1c34577f53af7d3fcd67f6a5.zip CMake-572ecc9b8ac38f2b1c34577f53af7d3fcd67f6a5.tar.gz CMake-572ecc9b8ac38f2b1c34577f53af7d3fcd67f6a5.tar.bz2 |
ENH: Added support for non-verbose mode output from running a command. This can be used when it is expected that the command may fail.
-rw-r--r-- | Source/cmSystemTools.cxx | 28 | ||||
-rw-r--r-- | Source/cmSystemTools.h | 6 |
2 files changed, 24 insertions, 10 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 42ee9fd..136728e 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -805,7 +805,8 @@ bool cmSystemTools::IsOff(const char* val) bool cmSystemTools::RunCommand(const char* command, - std::string& output) + std::string& output, + bool verbose) { const int BUFFER_SIZE = 4096; char buffer[BUFFER_SIZE]; @@ -820,12 +821,15 @@ bool cmSystemTools::RunCommand(const char* command, std::ifstream fin(tempFile.c_str()); if(!fin) { - std::string errormsg = "RunCommand produced no output: command: \""; - errormsg += command; - errormsg += "\""; - errormsg += "\nOutput file: "; - errormsg += tempFile; - cmSystemTools::Error(errormsg.c_str()); + if(verbose) + { + std::string errormsg = "RunCommand produced no output: command: \""; + errormsg += command; + errormsg += "\""; + errormsg += "\nOutput file: "; + errormsg += tempFile; + cmSystemTools::Error(errormsg.c_str()); + } fin.close(); cmSystemTools::RemoveFile(tempFile.c_str()); return false; @@ -839,7 +843,10 @@ bool cmSystemTools::RunCommand(const char* command, cmSystemTools::RemoveFile(tempFile.c_str()); return true; #else - std::cout << "running " << command << std::endl; + if(verbose) + { + std::cout << "running " << command << std::endl; + } FILE* cpipe = popen(command, "r"); if(!cpipe) { @@ -848,7 +855,10 @@ bool cmSystemTools::RunCommand(const char* command, fgets(buffer, BUFFER_SIZE, cpipe); while(!feof(cpipe)) { - std::cout << buffer << std::flush; + if(verbose) + { + std::cout << buffer << std::flush; + } output += buffer; fgets(buffer, BUFFER_SIZE, cpipe); } diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index d5566ba..a458b54 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -245,8 +245,12 @@ public: * Run an executable command and put the stdout in output. * A temporary file is created in the binaryDir for storing the * output because windows does not have popen. + * + * If verbose is false, no user-viewable output from the program + * being run will be generated. */ - static bool RunCommand(const char* command, std::string& output); + static bool RunCommand(const char* command, std::string& output, + bool verbose = true); ///! Generate a temporary file name static std::string TemporaryFileName(); |