30 auto iter = path.end();
31 boost::filesystem::path head = path;
33 for (; !head.empty(); --iter) {
34 if (boost::filesystem::exists(head)) {
37 head.remove_filename();
41 return boost::filesystem::absolute(path);
42 head = boost::filesystem::canonical(head);
44 boost::filesystem::path tail;
45 for (; iter != path.end(); ++iter) {
52 return boost::filesystem::absolute(head / tail);
101 handler_ptr = i->second.lock();
106 auto handler_destroy = [this_weak, canonical](
FileHandler* obj) {
107 auto this_shared = this_weak.
lock();
110 this_shared->m_handlers.erase(canonical);