X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Fdir.cpp;h=afc2b6696800c2d157b5d63962572679a1d77de9;hp=c53c156fec68b6e2df51c2afdb09396281ae92bd;hb=9ef362fabde5092288a8f59e6dae503c83a9462c;hpb=19edaf3b45bc4c23459fc8ddd552dcfa33eecc71 diff --git a/source/fs/dir.cpp b/source/fs/dir.cpp index c53c156..afc2b66 100644 --- a/source/fs/dir.cpp +++ b/source/fs/dir.cpp @@ -4,6 +4,8 @@ #include #ifdef WIN32 #include +#else +#include #endif #include #include @@ -85,16 +87,12 @@ void mkpath(const Path &path, int mode) if(p.size()==1 && p.is_absolute()) continue; #endif - struct stat st; - int err = stat(p, st); - if(err==0) + if(exists(p)) { - if(!S_ISDIR(st.st_mode)) + if(!is_dir(p)) throw not_a_directory(p); continue; } - else if(errno!=ENOENT) - throw system_error("mkpath:stat"); else mkdir(p, mode); } @@ -112,8 +110,7 @@ void rmdirs(const Path &path) for(list::iterator i=files.begin(); i!=files.end(); ++i) { Path p = path / *i; - struct stat st = stat(p.str().c_str()); - if(S_ISDIR(st.st_mode)) + if(is_dir(p)) rmdirs(p); else unlink(p);