Use native win32 functions for rename and unlink
authorMikko Rasa <tdb@tdb.fi>
Sun, 4 Nov 2012 20:36:11 +0000 (22:36 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sun, 4 Nov 2012 20:36:11 +0000 (22:36 +0200)
source/fs/utils.cpp

index 1da18591b1c87119c2fccd0012898af78c5e3412..9a9802524399e53c8b21e723764f939a6fd9f8c1 100644 (file)
@@ -1,5 +1,7 @@
 #include <cstdio>
-#ifndef WIN32
+#ifdef WIN32
+#include <windows.h>
+#else
 #include <unistd.h>
 #endif
 #include <msp/core/systemerror.h>
@@ -129,14 +131,24 @@ Path realpath(const Path &path)
 
 void rename(const Path &from, const Path &to)
 {
+#ifdef WIN32
+       if(!MoveFileEx(from.c_str(), to.c_str(), MOVEFILE_REPLACE_EXISTING))
+               throw system_error("MoveFileEx");
+#else
        if(::rename(from.str().c_str(), to.str().c_str())==-1)
                throw system_error("rename");
+#endif
 }
 
 void unlink(const Path &path)
 {
+#ifdef WIN32
+       if(!DeleteFile(path.c_str()))
+               throw system_error("DeleteFile");
+#else
        if(::unlink(path.str().c_str())==-1)
                throw system_error("unlink");
+#endif
 }
 
 Path relative(const Path &path, const Path &base)