BlinkenArea - GitList
Repositories
Blog
Wiki
permissioner
Code
Commits
Branches
Tags
Search
Tree:
5e011c9
Branches
Tags
master
permissioner
libpermissioner
src
Tree.cpp
move most sources into libpermissioner
Stefan Schuermans
commited
5e011c9
at 2020-08-18 20:27:07
Tree.cpp
Blame
History
Raw
#include <permissioner/Tree.h> #include <permissioner/Permissions.h> #include <permissioner/StringUtils.h> #include <boost/filesystem.hpp> #include <boost/optional.hpp> #include <sstream> #include <stdexcept> #include <string> #include <vector> void Tree::parseParams(std::string const ¶mStr) { // format of paramStr is: <user> " " <group> " " <permissions> " " <root> // user, group, permissions may be - for no change std::string userStr, groupStr, permissionsStr, rootStr; std::string::size_type pos = 0; StringUtils::getNextField(paramStr, pos, userStr, "user"); StringUtils::getNextField(paramStr, pos, groupStr, "group"); StringUtils::getNextField(paramStr, pos, permissionsStr, "permissions"); if (pos >= paramStr.length()) { std::stringstream msg; msg << "<root> field missing in \"" << paramStr << "\""; throw std::runtime_error(msg.str()); } if (userStr == "-") { user = boost::none; } else { user = userStr; } if (groupStr == "-") { group = boost::none; } else { group = groupStr; } try { permissions.parseParams(permissionsStr); } catch (std::exception const & e) { std::stringstream msg; msg << "invalid <permissions> field in \"" << paramStr << "\": " << e.what(); throw std::runtime_error(msg.str()); } root = rootStr; }