diff --git a/include/ircd/fs.h b/include/ircd/fs.h index fb99a8068..5075e1f9b 100644 --- a/include/ircd/fs.h +++ b/include/ircd/fs.h @@ -20,7 +20,7 @@ */ #pragma once -#define HAVE_IRCD_PATH_H +#define HAVE_IRCD_FS_H /* * Directory paths and filenames for UNIX systems. @@ -37,7 +37,7 @@ */ namespace ircd { -namespace path { +namespace fs { IRCD_EXCEPTION(ircd::error, error) IRCD_EXCEPTION(error, filesystem_error) @@ -54,7 +54,7 @@ constexpr auto CPATH = RB_ETC_DIR "/ircd.conf"; // ircd.conf file constexpr auto MPATH = RB_ETC_DIR "/ircd.motd"; // MOTD file constexpr auto LPATH = RB_LOG_DIR "/ircd.log"; // ircd logfile constexpr auto OPATH = RB_ETC_DIR "/opers.motd"; // oper MOTD file -constexpr auto DBPATH = PKGLOCALSTATEDIR; // database prefix +constexpr auto DBPATH = PKGLOCALSTATEDIR "/db"; // database prefix constexpr auto BDBPATH = PKGLOCALSTATEDIR "/ban.db"; // bandb file // Below are the elements for default paths. @@ -82,7 +82,7 @@ enum index const char *get(index) noexcept; const char *name(index) noexcept; -std::string build(const std::initializer_list &); +std::string make_path(const std::initializer_list &); bool exists(const std::string &path); bool is_dir(const std::string &path); @@ -94,5 +94,5 @@ std::vector ls_recursive(const std::string &path); std::string cwd(); void chdir(const std::string &path); -} // namespace path +} // namespace fs } // namespace ircd diff --git a/include/ircd/stdinc.h b/include/ircd/stdinc.h index 428b7eef9..7ddd19c28 100644 --- a/include/ircd/stdinc.h +++ b/include/ircd/stdinc.h @@ -172,7 +172,7 @@ struct line {}; #include "json.h" #include "http.h" #include "fmt.h" -#include "path.h" +#include "fs.h" #include "ctx.h" #include "conf.h" #include "resource.h" diff --git a/ircd/fs.cc b/ircd/fs.cc index 6b7ee6ef5..df4808f2a 100644 --- a/ircd/fs.cc +++ b/ircd/fs.cc @@ -25,10 +25,10 @@ #include -namespace fs = boost::filesystem; - namespace ircd { -namespace path { +namespace fs { + +using namespace boost::filesystem; enum { @@ -57,12 +57,12 @@ std::array()> paths { "db", DBPATH }, }}; -} // namespace path +} // namespace fs } // namespace ircd void -ircd::path::chdir(const std::string &path) +ircd::fs::chdir(const std::string &path) try { fs::current_path(path); @@ -73,7 +73,7 @@ catch(const fs::filesystem_error &e) } std::string -ircd::path::cwd() +ircd::fs::cwd() try { return fs::current_path().string(); @@ -84,7 +84,7 @@ catch(const fs::filesystem_error &e) } std::vector -ircd::path::ls_recursive(const std::string &path) +ircd::fs::ls_recursive(const std::string &path) try { fs::recursive_directory_iterator it(path); @@ -104,13 +104,14 @@ catch(const fs::filesystem_error &e) } std::vector -ircd::path::ls(const std::string &path) +ircd::fs::ls(const std::string &path) try { + static const fs::directory_iterator end; + + std::vector ret; fs::directory_iterator it(path); - const fs::directory_iterator end; - std::vector ret(std::distance(it, end)); - std::transform(it, end, begin(ret), [] + std::transform(it, end, std::back_inserter(ret), [] (const auto &ent) { return ent.path().string(); @@ -124,7 +125,7 @@ catch(const fs::filesystem_error &e) } bool -ircd::path::is_reg(const std::string &path) +ircd::fs::is_reg(const std::string &path) try { return fs::is_regular_file(path); @@ -135,7 +136,7 @@ catch(const fs::filesystem_error &e) } bool -ircd::path::is_dir(const std::string &path) +ircd::fs::is_dir(const std::string &path) try { return fs::is_directory(path); @@ -146,7 +147,7 @@ catch(const fs::filesystem_error &e) } bool -ircd::path::exists(const std::string &path) +ircd::fs::exists(const std::string &path) try { return fs::exists(path); @@ -157,7 +158,7 @@ catch(const fs::filesystem_error &e) } std::string -ircd::path::build(const std::initializer_list &list) +ircd::fs::make_path(const std::initializer_list &list) { fs::path ret; for(const auto &s : list) @@ -167,7 +168,7 @@ ircd::path::build(const std::initializer_list &list) } const char * -ircd::path::get(index index) +ircd::fs::get(index index) noexcept try { return std::get(paths.at(index)).c_str(); @@ -178,7 +179,7 @@ catch(const std::out_of_range &e) } const char * -ircd::path::name(index index) +ircd::fs::name(index index) noexcept try { return std::get(paths.at(index)).c_str();