aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fs/FileSystem.hxx16
-rw-r--r--src/fs/Traits.hxx5
2 files changed, 21 insertions, 0 deletions
diff --git a/src/fs/FileSystem.hxx b/src/fs/FileSystem.hxx
index ac4e0998d..a6240bf0e 100644
--- a/src/fs/FileSystem.hxx
+++ b/src/fs/FileSystem.hxx
@@ -55,7 +55,11 @@ namespace FOpenMode {
static inline FILE *
FOpen(Path file, PathTraitsFS::const_pointer mode)
{
+#ifdef WIN32
+ return _tfopen(file.c_str(), mode);
+#else
return fopen(file.c_str(), mode);
+#endif
}
/**
@@ -64,7 +68,11 @@ FOpen(Path file, PathTraitsFS::const_pointer mode)
static inline int
OpenFile(Path file, int flags, int mode)
{
+#ifdef WIN32
+ return _topen(file.c_str(), flags, mode);
+#else
return open_cloexec(file.c_str(), flags, mode);
+#endif
}
/**
@@ -73,7 +81,11 @@ OpenFile(Path file, int flags, int mode)
static inline bool
RenameFile(Path oldpath, Path newpath)
{
+#ifdef WIN32
+ return _trename(oldpath.c_str(), newpath.c_str()) == 0;
+#else
return rename(oldpath.c_str(), newpath.c_str()) == 0;
+#endif
}
#ifndef WIN32
@@ -98,7 +110,11 @@ StatFile(Path file, struct stat &buf, bool follow_symlinks = true)
static inline bool
RemoveFile(Path file)
{
+#ifdef WIN32
+ return _tunlink(file.c_str()) == 0;
+#else
return unlink(file.c_str()) == 0;
+#endif
}
/**
diff --git a/src/fs/Traits.hxx b/src/fs/Traits.hxx
index b557dd752..cdd9b531d 100644
--- a/src/fs/Traits.hxx
+++ b/src/fs/Traits.hxx
@@ -26,13 +26,18 @@
#ifdef WIN32
#include "util/CharUtil.hxx"
+#include <tchar.h>
#endif
#include <string>
#include <assert.h>
+#ifdef WIN32
+#define PATH_LITERAL(s) _T(s)
+#else
#define PATH_LITERAL(s) (s)
+#endif
/**
* This class describes the nature of a native filesystem path.