Add rename function
authorMikko Rasa <tdb@tdb.fi>
Thu, 10 Feb 2011 21:45:57 +0000 (21:45 +0000)
committerMikko Rasa <tdb@tdb.fi>
Thu, 10 Feb 2011 21:45:57 +0000 (21:45 +0000)
source/utils.cpp
source/utils.h

index 22fe1acab7f1a2bd2293204cbcd0d70152366c77..8f06757bda2227f69aa075acc045f1046dba1ce6 100644 (file)
@@ -6,6 +6,7 @@ Distributed under the LGPL
 */
 
 #include <cerrno>
+#include <cstdio>
 #include <msp/core/except.h>
 #ifndef WIN32
 #include <fnmatch.h>
@@ -137,6 +138,12 @@ Path realpath(const Path &path)
 #endif
 }
 
+void rename(const Path &from, const Path &to)
+{
+       if(::rename(from.str().c_str(), to.str().c_str())==-1)
+               throw SystemError("rename failed", errno);
+}
+
 void unlink(const Path &path)
 {
        if(::unlink(path.str().c_str())==-1)
index 9b4a1e0f706d972f3f3cfbc3472a047cbd35129e..c582c2217ba7b489bbd43fb0801904ffb134c013 100644 (file)
@@ -46,6 +46,9 @@ Path realpath(const Path &path);
 /// Removes a file
 void unlink(const Path &path);
 
+/// Renames a file.  Existing file, if any, is overwritten.
+void rename(const Path &from, const Path &to);
+
 /// Makes a path relative to some base path.  That is, base/result==path.
 Path relative(const Path &path, const Path &base);