12#ifndef OPENVPN_COMMON_ENUMDIR_H
13#define OPENVPN_COMMON_ENUMDIR_H
42 while ((e = ::readdir(dir.get())) !=
nullptr)
44 std::string fn(e->d_name);
45 if (fn !=
"." && fn !=
"..")
46 std::invoke(func, std::move(fn));
52 const size_t size_hint = 0,
53 const bool sort =
false)
55 std::vector<std::string>
ret;
57 ret.reserve(size_hint);
60 {
ret.push_back(std::move(fn)); }))
61 throw enum_dir_error(
dirname +
": cannot open directory");
64 std::sort(
ret.begin(),
ret.end());
#define OPENVPN_EXCEPTION(C)
Support deferred server-side state creation when client connects.
bool enum_dir(const std::string &dirname, F func)
std::unique_ptr< T, std::function< void(T *)> > unique_ptr_del
void dirname(const std::string &path)