X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Fdir.cpp;h=7f81e4ea8301ef07ce7c4062bf65323de6f9dfc8;hp=00385e0d52d5602251719da1f3dc61859ccaecec;hb=20c897ece781e18ba54c41fd68e232ce566a938d;hpb=60260b5701bab73f8de093147de03947c7f264c8 diff --git a/source/fs/dir.cpp b/source/fs/dir.cpp index 00385e0..7f81e4e 100644 --- a/source/fs/dir.cpp +++ b/source/fs/dir.cpp @@ -20,7 +20,7 @@ namespace enum { -#ifdef WIN32 +#ifdef _WIN32 ITEMSEP = ';' #else ITEMSEP = ':' @@ -37,17 +37,17 @@ const Path &get_bin_dir(const string &argv0) if(!(argv0==last_argv0)) { Path exe; - if(argv0.find('/')==string::npos) - { - const char *path = getenv("PATH"); - vector dirs = split(path, ITEMSEP); - for(vector::const_iterator i=dirs.begin(); i!=dirs.end(); ++i) - if(exists(Path(*i)/argv0)) - { - exe = realpath(Path(*i)/argv0); - break; - } - } + if(argv0.find(DIRSEP)==string::npos) + if(const char *path = getenv("PATH")) + { + vector dirs = split(path, ITEMSEP); + for(vector::const_iterator i=dirs.begin(); i!=dirs.end(); ++i) + if(exists(Path(*i)/argv0)) + { + exe = realpath(Path(*i)/argv0); + break; + } + } if(exe.empty()) exe = realpath(argv0); @@ -73,7 +73,7 @@ void mkpath(const Path &path, int mode) for(Path::Iterator i=path.begin(); i!=path.end(); ++i) { p /= *i; -#ifdef WIN32 +#ifdef _WIN32 if(p.size()==1 && p.is_absolute()) continue; #endif @@ -130,24 +130,11 @@ list list_filtered(const Path &path, const string &filter) return result; } -Path getcwd() -{ - char buf[1024]; - return ::getcwd(buf, sizeof(buf)); -} - -Path get_user_data_dir() -{ - const string &name = Application::get_name(); - if(name.empty()) - throw logic_error("application name not known"); - return get_user_data_dir(); -} - -Path get_sys_conf_dir(const string &argv0) +Path get_sys_conf_dir() { - if(argv0.empty()) - throw invalid_argument("get_sys_conf_dir"); + const char *argv0 = Application::get_argv0(); + if(!argv0) + throw logic_error("no startup command"); Path dir = get_bin_dir(argv0); @@ -162,64 +149,36 @@ Path get_sys_conf_dir(const string &argv0) return dir; } -Path get_sys_conf_dir() +Path get_sys_data_dir() { const char *argv0 = Application::get_argv0(); if(!argv0) throw logic_error("no startup command"); - return get_sys_conf_dir(argv0); -} - -Path get_sys_data_dir(const string &argv0, const string &appname) -{ - if(argv0.empty() || appname.empty()) - throw invalid_argument("get_sys_data_dir"); Path dir = get_bin_dir(argv0); if(dir[-1]=="bin" || dir[-1]=="sbin") - return dir/".."/"share"/appname; + return dir/".."/"share"/Application::get_name(); else if(dir[-1]=="MacOS") return dir/".."/"Resources"; else return dir; } -Path get_sys_data_dir() +Path get_sys_lib_dir() { const char *argv0 = Application::get_argv0(); if(!argv0) throw logic_error("no startup command"); - return get_sys_data_dir(argv0, Application::get_name()); -} - -Path get_sys_lib_dir(const string &argv0, const string &appname) -{ - if(argv0.empty() || appname.empty()) - throw invalid_argument("get_sys_data_dir"); Path dir = get_bin_dir(argv0); if(dir[-1]=="bin" || dir[-1]=="sbin") - return dir/".."/"lib"/appname; + return dir/".."/"lib"/Application::get_name(); else return dir; } -Path get_sys_lib_dir() -{ - const char *argv0 = Application::get_argv0(); - if(!argv0) - throw logic_error("no startup command"); - return get_sys_lib_dir(argv0, Application::get_name()); -} - -void chdir(const Path &path) -{ - if(::chdir(path.str().c_str())==-1) - throw system_error("chdir"); -} - Path path_lookup(const string &name, const list &paths) { for(list::const_iterator i=paths.begin(); i!=paths.end(); ++i)