diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2004-01-26 19:55:57 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2004-01-26 19:55:57 (GMT) |
commit | 7527fbccc28a051142a53dd21ca7fe8e7fae2613 (patch) | |
tree | 35daf473cb570a99580efd8b8b0bb2ffc396eb08 | |
parent | 0217af3b5829b5d2e190d84109af2f0ab984c9ff (diff) | |
download | CMake-7527fbccc28a051142a53dd21ca7fe8e7fae2613.zip CMake-7527fbccc28a051142a53dd21ca7fe8e7fae2613.tar.gz CMake-7527fbccc28a051142a53dd21ca7fe8e7fae2613.tar.bz2 |
ENH: Add code for setting and getting permissions
-rw-r--r-- | Source/cmSystemTools.cxx | 36 | ||||
-rw-r--r-- | Source/cmSystemTools.h | 6 |
2 files changed, 41 insertions, 1 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 28b378b..7478d71 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -42,6 +42,8 @@ #include <unistd.h> #endif +#include <sys/stat.h> + bool cmSystemTools::s_RunCommandHideConsole = false; bool cmSystemTools::s_DisableRunCommandOutput = false; @@ -1205,3 +1207,37 @@ bool cmSystemTools::PutEnv(const char* value) localEnvironment.push_back(envVar); return ret == 0; } + +bool cmSystemTools::GetPermissions(const char* file, mode_t& mode) +{ + if ( !file ) + { + return false; + } + + struct stat st; + if ( stat(file, &st) < 0 ) + { + return false; + } + mode = st.st_mode; + return true; +} + +bool cmSystemTools::SetPermissions(const char* file, mode_t mode) +{ + if ( !file ) + { + return false; + } + if ( !cmSystemTools::FileExists(file) ) + { + return false; + } + if ( chmod(file, mode) < 0 ) + { + return false; + } + + return true; +} diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index a8bbc8b..9099844 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -259,7 +259,11 @@ public: /** put a string into the environment of the form var=value */ static bool PutEnv(const char* value); - + + ///! Get permissions of the file + static bool GetPermissions(const char* file, mode_t& mode); + static bool SetPermissions(const char* file, mode_t mode); + private: static bool s_ForceUnixPaths; static bool s_RunCommandHideConsole; |