summaryrefslogtreecommitdiff
path: root/thirdparty/thekla_atlas/nvcore/FileSystem.cpp
diff options
context:
space:
mode:
authorHein-Pieter van Braam <hp@tmm.cx>2017-12-08 15:05:47 +0100
committerHein-Pieter van Braam <hp@tmm.cx>2017-12-08 15:47:15 +0100
commitbf05309af734431c3b3cf869a63ed477439a6739 (patch)
tree72c1c939f9035c711f50ec94b0270ea60e0bb4e4 /thirdparty/thekla_atlas/nvcore/FileSystem.cpp
parentb3b4727dff009dda0a65b8a013ec04d52a54b367 (diff)
Import thekla_atlas
As requested by reduz, an import of thekla_atlas into thirdparty/
Diffstat (limited to 'thirdparty/thekla_atlas/nvcore/FileSystem.cpp')
-rw-r--r--thirdparty/thekla_atlas/nvcore/FileSystem.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/thirdparty/thekla_atlas/nvcore/FileSystem.cpp b/thirdparty/thekla_atlas/nvcore/FileSystem.cpp
new file mode 100644
index 0000000000..5ed0ca074f
--- /dev/null
+++ b/thirdparty/thekla_atlas/nvcore/FileSystem.cpp
@@ -0,0 +1,75 @@
+// This code is in the public domain -- castano@gmail.com
+
+#include "FileSystem.h"
+
+#if NV_OS_WIN32
+#define _CRT_NONSTDC_NO_WARNINGS // _chdir is defined deprecated, but that's a bug, chdir is deprecated, _chdir is *not*.
+//#include <shlwapi.h> // PathFileExists
+#include <windows.h> // GetFileAttributes
+#include <direct.h> // _mkdir
+#elif NV_OS_XBOX
+#include <Xtl.h>
+#elif NV_OS_DURANGO
+#include <Windows.h>
+#else
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+#include <stdio.h> // remove, unlink
+
+using namespace nv;
+
+
+bool FileSystem::exists(const char * path)
+{
+#if NV_OS_UNIX
+ return access(path, F_OK|R_OK) == 0;
+ //struct stat buf;
+ //return stat(path, &buf) == 0;
+#elif NV_OS_WIN32 || NV_OS_XBOX || NV_OS_DURANGO
+ // PathFileExists requires linking to shlwapi.lib
+ //return PathFileExists(path) != 0;
+ return GetFileAttributesA(path) != INVALID_FILE_ATTRIBUTES;
+#else
+ if (FILE * fp = fopen(path, "r"))
+ {
+ fclose(fp);
+ return true;
+ }
+ return false;
+#endif
+}
+
+bool FileSystem::createDirectory(const char * path)
+{
+#if NV_OS_WIN32 || NV_OS_XBOX || NV_OS_DURANGO
+ return CreateDirectoryA(path, NULL) != 0;
+#elif NV_OS_ORBIS
+ // not implemented
+ return false;
+#else
+ return mkdir(path, 0777) != -1;
+#endif
+}
+
+bool FileSystem::changeDirectory(const char * path)
+{
+#if NV_OS_WIN32
+ return _chdir(path) != -1;
+#elif NV_OS_XBOX || NV_OS_DURANGO
+ // Xbox doesn't support Current Working Directory!
+ return false;
+#elif NV_OS_ORBIS
+ // Orbis doesn't support Current Working Directory!
+ return false;
+#else
+ return chdir(path) != -1;
+#endif
+}
+
+bool FileSystem::removeFile(const char * path)
+{
+ // @@ Use unlink or remove?
+ return remove(path) == 0;
+}