Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/sys
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2009-02-08 13:12:41 +0000
committerStijn Buys <ingar@osirion.org>2009-02-08 13:12:41 +0000
commit43f7733dfdd8700430a238d230ed573c12e72c87 (patch)
treea3fd4dea40ae291ee8bed1dfb3472324e1657fe0 /src/sys
parent48892cf81a5ef06103286947b2eb55c7c46681a4 (diff)
added filesystem::FileStream
Diffstat (limited to 'src/sys')
-rw-r--r--src/sys/sys.cc33
-rw-r--r--src/sys/sys.h5
2 files changed, 36 insertions, 2 deletions
diff --git a/src/sys/sys.cc b/src/sys/sys.cc
index 59ed11d..01c9e3b 100644
--- a/src/sys/sys.cc
+++ b/src/sys/sys.cc
@@ -32,7 +32,38 @@
namespace sys
{
-bool isdirectory(const std::string &path)
+bool file_exists(const std::string &filename)
+{
+#ifdef _WIN32
+ struct ::_stat path_stat;
+ memset(&path_stat, 0, sizeof(struct ::_stat));
+
+ if (::_stat(filename.c_str(), &path_stat) != 0) {
+ return false;
+ }
+
+ if (path_stat.st_mode & _S_IFDIR) {
+ return false;
+ }
+ return true;
+#else
+ struct stat path_stat;
+ memset(&path_stat, 0, sizeof(path_stat));
+
+ if (stat(filename.c_str(), &path_stat) != 0) {
+ return false;
+ }
+
+ if (path_stat.st_mode & S_IFDIR) {
+ return false;
+ }
+
+ return true;
+#endif
+}
+
+
+bool directory_exists(const std::string &path)
{
#ifdef _WIN32
struct ::_stat path_stat;
diff --git a/src/sys/sys.h b/src/sys/sys.h
index 81eba94..5e41daa 100644
--- a/src/sys/sys.h
+++ b/src/sys/sys.h
@@ -22,7 +22,10 @@ namespace sys
typedef void(* signalfunc)(int signum);
/// returns true if a path exists and it is a directory
-bool isdirectory(const std::string &path);
+bool directory_exists(const std::string &path);
+
+/// returns true if a file exists
+bool file_exists(const std::string &filename);
/// create a directory
void mkdir(const std::string &path);