Module: check_mk
Branch: master
Commit: 8488090004edb3dd00bf0a50dcd655a843d260be
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8488090004edb3…
Author: Jukka Aro <ja(a)mathias-kettner.de>
Date: Tue Mar 6 10:32:52 2018 +0100
Windows agent: refactor duplicated code away
---
agents/windows/build_version | 2 +-
agents/windows/stringutil.cc | 26 ++++++++++----------------
2 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/agents/windows/build_version b/agents/windows/build_version
index a32440d..2caf624 100644
--- a/agents/windows/build_version
+++ b/agents/windows/build_version
@@ -1 +1 @@
-3152
+3154
diff --git a/agents/windows/stringutil.cc b/agents/windows/stringutil.cc
index 75501f9..232e2dc 100644
--- a/agents/windows/stringutil.cc
+++ b/agents/windows/stringutil.cc
@@ -298,16 +298,20 @@ const std::string ipv6seg{"[0-9a-fA-F]{1,4}"};
const std::string port{"[[:digit:]]+"};
const std::regex ipv4{"^" + ipv4addr + "(:" + port +
")?$"};
-OptionalString matchIPv4(const std::string &inputAddr) {
+OptionalString matchBase(const std::string &input, const std::regex ®) {
std::smatch match;
- if (std::regex_match(inputAddr, match, ipv4) && match.size() >= 2) {
+ if (std::regex_match(input, match, reg) && match.size() >= 2) {
return std::optional(match[1].str());
}
return std::nullopt;
}
+OptionalString matchIPv4(const std::string &inputAddr) {
+ return matchBase(inputAddr, ipv4);
+}
+
OptionalString matchIPv6Mapped(const std::string &inputAddr) {
const std::string ipv6addrMapped{"::(ffff(:0)?:)?(" + ipv4addr +
")"};
const std::regex ipv6mapped{
@@ -318,8 +322,8 @@ OptionalString matchIPv6Mapped(const std::string &inputAddr) {
std::smatch subMatch;
for (const auto &m : match) {
const auto subString{m.str()};
- if (std::regex_match(subString, subMatch, ipv4)) {
- return std::optional(subMatch.str());
+ if (const auto subMatch = matchBase(subString, ipv4)) {
+ return subMatch;
}
}
}
@@ -341,13 +345,8 @@ OptionalString matchIPv6(const std::string &inputAddr) {
+ "|::"
+ ")"};
const std::regex ipv6{"^\\[?" + ipv6addr + "(\\]:" + port +
")?$"};
- std::smatch match;
-
- if (std::regex_match(inputAddr, match, ipv6) && match.size() >= 2) {
- return std::optional(match[1].str());
- }
- return std::nullopt;
+ return matchBase(inputAddr, ipv6);
}
OptionalString matchIPv6Embedded(const std::string &inputAddr) {
@@ -356,13 +355,8 @@ OptionalString matchIPv6Embedded(const std::string &inputAddr) {
+ ")"};
const std::regex ipv6embedded{
"^\\[?" + ipv6addrEmbedded + "(\\]:" + port +
")?$"};
- std::smatch match;
- if (std::regex_match(inputAddr, match, ipv6embedded) && match.size() >= 2)
{
- return std::optional(match[1].str());
- }
-
- return std::nullopt;
+ return matchBase(inputAddr, ipv6embedded);
}
} // namespace