From fe1fda64310caad84e183da3a2e830b293578ceb Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Fri, 17 Mar 2006 11:14:14 -0500 Subject: [PATCH] ENH: Use vector of plain strings and add cmake -E command for getting environment --- Source/cmSystemTools.cxx | 4 ++-- Source/cmSystemTools.h | 2 +- Source/cmake.cxx | 23 ++++++++++++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index b140e315b..55cf61d11 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1280,9 +1280,9 @@ bool cmSystemTools::PutEnv(const char* value) return ret == 0; } -std::vector cmSystemTools::GetEnvironmentVariables() +std::vector cmSystemTools::GetEnvironmentVariables() { - std::vector env; + std::vector env; int cc; for ( cc = 0; environ[cc]; ++ cc ) { diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index c4cb4c264..8af74ed64 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -294,7 +294,7 @@ public: /** put a string into the environment of the form var=value */ static bool PutEnv(const char* value); - static std::vector GetEnvironmentVariables(); + static std::vector GetEnvironmentVariables(); /** Setup the environment to enable VS 8 IDE output. */ static void EnableVSConsoleOutput(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 8411b922f..ef43c6129 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -745,18 +745,18 @@ void CMakeCommandUsage(const char* program) "content to directory 'destination'\n" << " compare_files file1 file2 - check if file1 is same as file2\n" << " echo [string]... - displays arguments as text\n" + << " environment - display the current enviroment\n" << " remove file1 file2 ... - remove the file(s)\n" << " tar [cxt][vfz] file.tar file/dir1 file/dir2 ... - create a tar.\n" - << " time command [args] ... - run command and return elapsed time\n"; + << " time command [args] ... - run command and return elapsed time\n" #if defined(_WIN32) && !defined(__CYGWIN__) - errorStream << " write_regv key value - write registry value\n" << " delete_regv key - delete registry value\n" - << " comspec - on windows 9x use this for RunCommand\n"; + << " comspec - on windows 9x use this for RunCommand\n" #else - errorStream - << " create_symlink old new - create a symbolic link new -> old\n"; + << " create_symlink old new - create a symbolic link new -> old\n" #endif + ; cmSystemTools::Error(errorStream.str().c_str()); } @@ -831,6 +831,19 @@ int cmake::ExecuteCMakeCommand(std::vector& args) return 0; } + // Command to create a symbolic link. Fails on platforms not + // supporting them. + else if (args[1] == "environment" ) + { + std::vector env = cmSystemTools::GetEnvironmentVariables(); + std::vector::iterator it; + for ( it = env.begin(); it != env.end(); ++ it ) + { + std::cout << it->c_str() << std::endl; + } + return 0; + } + // Remove file else if (args[1] == "remove" && args.size() > 2) {