From db9adf0e14f01d0aa8eb288a172995847c006f57 Mon Sep 17 00:00:00 2001 From: Jose Date: Wed, 29 Jul 2009 21:50:06 +0200 Subject: Changes for bug 3962 and 4714 --- cpp/src/IceUtil/FileUtil.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'cpp/src/IceUtil/FileUtil.cpp') diff --git a/cpp/src/IceUtil/FileUtil.cpp b/cpp/src/IceUtil/FileUtil.cpp index ac830069b52..4486bbd0dd9 100644 --- a/cpp/src/IceUtil/FileUtil.cpp +++ b/cpp/src/IceUtil/FileUtil.cpp @@ -8,6 +8,7 @@ // ********************************************************************** #include +#include using namespace std; @@ -51,3 +52,44 @@ IceUtilInternal::isAbsolutePath(const string& path) return path[i] == '/'; #endif } + +// +// Detemine if a directory exists. +// +bool +IceUtilInternal::directoryExists(const string& path) +{ + IceUtilInternal::structstat st; + if(IceUtilInternal::stat(path, &st) != 0 || !S_ISDIR(st.st_mode)) + { + return false; + } + return true; +} + +// +// Determine if a regular file exists. +// +bool +IceUtilInternal::fileExists(const string& path) +{ + IceUtilInternal::structstat st; + if(IceUtilInternal::stat(path, &st) != 0 || !S_ISREG(st.st_mode)) + { + return false; + } + return true; +} + +// +// Stat +// +int +IceUtilInternal::stat(const string& path, structstat* buffer) +{ +#ifdef _WIN32 + return _wstat(IceUtil::stringToWstring(path).c_str(), buffer); +#else + return stat(path.c_str(), buffer); +#endif +} -- cgit v1.2.3