X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Fdir.cpp;h=066d88bc1fd2c461bae39b5e3700d756f2aaa5b6;hp=098020328342db2edf93d4b2b425555405ab5f00;hb=HEAD;hpb=44da9fc9afb6b7e49c1558c5572213a1e6f401e8 diff --git a/source/fs/dir.cpp b/source/fs/dir.cpp index 0980203..0f617e5 100644 --- a/source/fs/dir.cpp +++ b/source/fs/dir.cpp @@ -1,9 +1,6 @@ -#include -#include -#include #include -#include -#include +#include +#include #include #include "dir.h" #include "path.h" @@ -38,7 +35,9 @@ const Path &get_bin_dir(const string &argv0) { Path exe; if(argv0.find(DIRSEP)==string::npos) - if(const char *path = getenv("PATH")) + { + string path = getenv("PATH"); + if(!path.empty()) { for(const string &d: split(path, ITEMSEP)) if(exists(Path(d)/argv0)) @@ -47,6 +46,7 @@ const Path &get_bin_dir(const string &argv0) break; } } + } if(exe.empty()) exe = realpath(argv0); @@ -106,33 +106,11 @@ vector list_files(const Path &path) return list_filtered(path, string()); } -vector list_filtered(const Path &path, const string &filter) -{ - Regex r_filter(filter); - - vector result; - DIR *dir = opendir(path.str().c_str()); - if(!dir) - throw system_error("opendir"); - - while(dirent *de = readdir(dir)) - { - const char *fn = de->d_name; - if(fn[0]=='.' && (fn[1]==0 || (fn[1]=='.' && fn[2]==0))) - continue; - if(r_filter.match(fn)) - result.push_back(fn); - } - closedir(dir); - - return result; -} - Path get_sys_conf_dir() { const char *argv0 = Application::get_argv0(); if(!argv0) - throw logic_error("no startup command"); + throw invalid_state("no startup command"); Path dir = get_bin_dir(argv0); @@ -151,7 +129,7 @@ Path get_sys_data_dir() { const char *argv0 = Application::get_argv0(); if(!argv0) - throw logic_error("no startup command"); + throw invalid_state("no startup command"); Path dir = get_bin_dir(argv0); @@ -167,7 +145,7 @@ Path get_sys_lib_dir() { const char *argv0 = Application::get_argv0(); if(!argv0) - throw logic_error("no startup command"); + throw invalid_state("no startup command"); Path dir = get_bin_dir(argv0); @@ -191,7 +169,7 @@ Path path_lookup(const string &name, const vector &paths) Path path_lookup(const string &name) { - const char *path = getenv("PATH"); + string path = getenv("PATH"); vector dirs = split(path, ITEMSEP); return path_lookup(name, vector(dirs.begin(), dirs.end())); }