summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/FileUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceUtil/FileUtil.cpp')
-rw-r--r--cpp/src/IceUtil/FileUtil.cpp42
1 files changed, 42 insertions, 0 deletions
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 <IceUtil/FileUtil.h>
+#include <IceUtil/Unicode.h>
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
+}