summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2004-01-26 19:55:57 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2004-01-26 19:55:57 (GMT)
commit7527fbccc28a051142a53dd21ca7fe8e7fae2613 (patch)
tree35daf473cb570a99580efd8b8b0bb2ffc396eb08
parent0217af3b5829b5d2e190d84109af2f0ab984c9ff (diff)
downloadCMake-7527fbccc28a051142a53dd21ca7fe8e7fae2613.zip
CMake-7527fbccc28a051142a53dd21ca7fe8e7fae2613.tar.gz
CMake-7527fbccc28a051142a53dd21ca7fe8e7fae2613.tar.bz2
ENH: Add code for setting and getting permissions
-rw-r--r--Source/cmSystemTools.cxx36
-rw-r--r--Source/cmSystemTools.h6
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;