]> git.tdb.fi Git - libs/core.git/blobdiff - source/fs/utils.cpp
Exception rework for fs components
[libs/core.git] / source / fs / utils.cpp
index 0c29a5306cf591d7f10abf053c65651804f6a942..d34a750903a45dd64864e11f56cd48947a097fb9 100644 (file)
@@ -1,6 +1,5 @@
-#include <cerrno>
 #include <cstdio>
 #include <cstdio>
-#include <msp/core/except.h>
+#include <msp/core/systemerror.h>
 #ifndef WIN32
 #include <fnmatch.h>
 #else
 #ifndef WIN32
 #include <fnmatch.h>
 #else
@@ -83,12 +82,12 @@ Path readlink(const Path &link)
 {
 #ifdef WIN32
        (void)link;
 {
 #ifdef WIN32
        (void)link;
-       throw Exception("No symbolic links on win32");
+       throw logic_error("no symbolic links on win32");
 #else
        char buf[4096];
        int len = ::readlink(link.str().c_str(), buf, sizeof(buf));
        if(len==-1)
 #else
        char buf[4096];
        int len = ::readlink(link.str().c_str(), buf, sizeof(buf));
        if(len==-1)
-               throw SystemError("readlink failed", errno);
+               throw system_error("readlink");
        return string(buf, len);
 #endif
 }
        return string(buf, len);
 #endif
 }
@@ -119,7 +118,7 @@ Path realpath(const Path &path)
                if(S_ISLNK(st.st_mode))
                {
                        if(++n_links>64)
                if(S_ISLNK(st.st_mode))
                {
                        if(++n_links>64)
-                               throw Exception("Ludicrous amount of symlinks detected in realpath, giving up");
+                               throw runtime_error("too many symbolic links");
                        Path link = readlink(next);
                        queue.insert(queue.begin(), link.begin(), link.end());
                }
                        Path link = readlink(next);
                        queue.insert(queue.begin(), link.begin(), link.end());
                }
@@ -134,13 +133,13 @@ Path realpath(const Path &path)
 void rename(const Path &from, const Path &to)
 {
        if(::rename(from.str().c_str(), to.str().c_str())==-1)
 void rename(const Path &from, const Path &to)
 {
        if(::rename(from.str().c_str(), to.str().c_str())==-1)
-               throw SystemError("rename failed", errno);
+               throw system_error("rename");
 }
 
 void unlink(const Path &path)
 {
        if(::unlink(path.str().c_str())==-1)
 }
 
 void unlink(const Path &path)
 {
        if(::unlink(path.str().c_str())==-1)
-               throw SystemError("unlink failed", errno);
+               throw system_error("unlink");
 }
 
 Path relative(const Path &path, const Path &base)
 }
 
 Path relative(const Path &path, const Path &base)