diff --git a/include/pfs/parsers/lines.hpp b/include/pfs/parsers/lines.hpp index 086d1cd..bb203d2 100644 --- a/include/pfs/parsers/lines.hpp +++ b/include/pfs/parsers/lines.hpp @@ -31,7 +31,7 @@ template using inserted_type = typename Inserter::container_type::value_type; template -void parse_and_filter_lines( +void parse_file_lines( const std::string& path, Inserter inserter, std::function(const std::string&)> parser, @@ -58,6 +58,7 @@ void parse_and_filter_lines( } auto inserted = parser(line); + if (filter && filter(inserted)) { continue; @@ -67,16 +68,6 @@ void parse_and_filter_lines( } } -template -void parse_lines( - const std::string& path, - Inserter inserter, - std::function(const std::string&)> parser, - size_t lines_to_skip = 0) -{ - parse_and_filter_lines(path, inserter, parser, nullptr, lines_to_skip); -} - } // namespace parsers } // namespace impl } // namespace pfs diff --git a/src/net.cpp b/src/net.cpp index 484837e..00ebd9d 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -44,8 +44,9 @@ std::vector net::get_dev(net_device_filter filter) const static const size_t HEADER_LINES = 2; std::vector output; - parsers::parse_and_filter_lines(path, std::back_inserter(output), - parsers::parse_net_device_line, filter, HEADER_LINES); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_net_device_line, + filter, HEADER_LINES); return output; } @@ -117,9 +118,9 @@ std::vector net::get_netlink(netlink_socket_filter filter) const static const size_t HEADER_LINES = 1; std::vector output; - parsers::parse_and_filter_lines(path, std::back_inserter(output), - parsers::parse_netlink_socket_line, - filter, HEADER_LINES); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_netlink_socket_line, + filter, HEADER_LINES); return output; } @@ -131,9 +132,9 @@ std::vector net::get_unix(unix_socket_filter filter) const static const size_t HEADER_LINES = 1; std::vector output; - parsers::parse_and_filter_lines(path, std::back_inserter(output), - parsers::parse_unix_socket_line, - filter, HEADER_LINES); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_unix_socket_line, + filter, HEADER_LINES); return output; } @@ -145,23 +146,23 @@ std::vector net::get_net_sockets(const std::string& file, static const size_t HEADER_LINES = 1; std::vector output; - parsers::parse_and_filter_lines(path, std::back_inserter(output), - parsers::parse_net_socket_line, - filter, HEADER_LINES); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_net_socket_line, + filter, HEADER_LINES); return output; } std::vector net::get_route(net_route_filter filter) const { - static const size_t HEADER_LINES = 1; - static const std::string ROUTES_FILE("route"); auto path = _net_root + ROUTES_FILE; + static const size_t HEADER_LINES = 1; + std::vector output; - parsers::parse_and_filter_lines(path, std::back_inserter(output), - parsers::parse_net_route_line, - filter, HEADER_LINES); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_net_route_line, + filter, HEADER_LINES); return output; } diff --git a/src/procfs.cpp b/src/procfs.cpp index 0d808ac..43a156b 100644 --- a/src/procfs.cpp +++ b/src/procfs.cpp @@ -92,21 +92,22 @@ std::vector procfs::get_buddyinfo() const auto path = _root + BUDDYINFO_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_buddyinfo_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_buddyinfo_line); return output; } std::vector procfs::get_cgroups() const { - static const size_t HEADER_LINES = 1; - static const std::string CGROUPS_FILE("cgroups"); auto path = _root + CGROUPS_FILE; + static const size_t HEADER_LINES = 1; + std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_cgroup_controller_line, HEADER_LINES); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_cgroup_controller_line, + /* filter = */ nullptr, HEADER_LINES); return output; } @@ -124,8 +125,8 @@ std::unordered_map procfs::get_filesystems() const auto path = _root + FILESYSTEMS_FILE; std::unordered_map output; - parsers::parse_lines(path, std::inserter(output, output.begin()), - parsers::parse_filesystems_line); + parsers::parse_file_lines(path, std::inserter(output, output.begin()), + parsers::parse_filesystems_line); return output; } @@ -135,8 +136,8 @@ std::unordered_map procfs::get_meminfo() const auto path = _root + MEMINFO_FILE; std::unordered_map output; - parsers::parse_lines(path, std::inserter(output, output.begin()), - parsers::parse_meminfo_line); + parsers::parse_file_lines(path, std::inserter(output, output.begin()), + parsers::parse_meminfo_line); return output; } @@ -172,8 +173,8 @@ std::vector procfs::get_modules() const auto path = _root + MODULES_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_modules_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_modules_line); return output; } diff --git a/src/task.cpp b/src/task.cpp index a5a0dbc..e7e47e1 100644 --- a/src/task.cpp +++ b/src/task.cpp @@ -80,8 +80,8 @@ std::vector task::get_cgroups() const auto path = _task_root + CGROUP_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_cgroup_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_cgroup_line); return output; } @@ -345,8 +345,8 @@ std::vector task::get_maps() const auto path = _task_root + MAPS_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_maps_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_maps_line); return output; } @@ -364,8 +364,8 @@ std::vector task::get_mountinfo() const auto path = _task_root + MOUNTINFO_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_mountinfo_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_mountinfo_line); return output; } @@ -473,8 +473,8 @@ std::vector task::get_uid_map() const auto path = _task_root + UID_MAP_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_id_map_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_id_map_line); return output; } @@ -484,8 +484,8 @@ std::vector task::get_gid_map() const auto path = _task_root + GID_MAP_FILE; std::vector output; - parsers::parse_lines(path, std::back_inserter(output), - parsers::parse_id_map_line); + parsers::parse_file_lines(path, std::back_inserter(output), + parsers::parse_id_map_line); return output; } diff --git a/test/test_parsers.cpp b/test/test_parsers.cpp index d599ea4..d909f33 100644 --- a/test/test_parsers.cpp +++ b/test/test_parsers.cpp @@ -50,7 +50,7 @@ TEST_CASE("Parse lines move()-s", "[parsers]") pfs::impl::defer unlink_temp_file([&file] { unlink(file.c_str()); }); std::vector output; - parse_lines(file, std::back_inserter(output), parser); + parse_file_lines(file, std::back_inserter(output), parser); REQUIRE(output.size() == content.size()); for (size_t i = 0; i < output.size(); ++i) @@ -105,6 +105,6 @@ TEST_CASE("Parse lines functionality", "[parsers]") } file = create_temp_file(content); - parse_and_filter_lines(file, std::back_inserter(output), parser, filter, skipped); + parse_file_lines(file, std::back_inserter(output), parser, filter, skipped); REQUIRE(output == expected); }