X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Fdir.cpp;h=57fd9368f2b311da99ea1cb3a2fc1ccdaf286510;hp=75ad8d5ecd39e0144eb7cd2f0be4ee83ab0604e8;hb=609c9a508cfdc7b42c46c4f21d17639204165a00;hpb=e240e074ce15c17d644e378067c2941aefcd5611 diff --git a/source/fs/dir.cpp b/source/fs/dir.cpp index 75ad8d5..57fd936 100644 --- a/source/fs/dir.cpp +++ b/source/fs/dir.cpp @@ -1,10 +1,6 @@ #include -#include +#include #include -#include -#ifdef WIN32 -#include -#endif #include #include #include @@ -60,21 +56,6 @@ not_a_directory::not_a_directory(const Path &p): { } -void mkdir(const Path &path, int mode) -{ - int err; -#ifdef WIN32 - // The win32 version of this function doesn't take the mode argument. Go figure. - (void)mode; - err = ::mkdir(path.str().c_str()); -#else - err = ::mkdir(path.str().c_str(), mode); -#endif - - if(err==-1) - throw system_error("mkdir"); -} - void mkpath(const Path &path, int mode) { Path p; @@ -85,9 +66,9 @@ void mkpath(const Path &path, int mode) if(p.size()==1 && p.is_absolute()) continue; #endif - if(exists(p)) + if(FS::Stat st = stat(p)) { - if(!is_dir(p)) + if(!st.is_directory()) throw not_a_directory(p); continue; } @@ -96,20 +77,14 @@ void mkpath(const Path &path, int mode) } } -void rmdir(const Path &path) -{ - if(::rmdir(path.str().c_str())==-1) - throw system_error("rmdir"); -} - -void rmdirs(const Path &path) +void rmpath(const Path &path) { list files = list_files(path); for(list::iterator i=files.begin(); i!=files.end(); ++i) { Path p = path / *i; if(is_dir(p)) - rmdirs(p); + rmpath(p); else unlink(p); } @@ -150,32 +125,6 @@ Path getcwd() return ::getcwd(buf, sizeof(buf)); } -Path get_home_dir() -{ -#ifdef WIN32 - char home[MAX_PATH]; - if(SHGetFolderPath(0, CSIDL_PERSONAL, 0, 0, home)==S_OK) - return home; -#else - const char *home = getenv("HOME"); - if(home) - return home; -#endif - return "."; -} - -Path get_user_data_dir(const string &appname) -{ -#ifdef WIN32 - char datadir[MAX_PATH]; - if(SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, 0, datadir)==S_OK) - return Path(datadir)/appname; - return "."; -#else - return get_home_dir()/("."+appname); -#endif -} - Path get_sys_conf_dir(const string &argv0) { Path dir = get_bin_dir(argv0);