Replace boost string predicate functions with stdlib ones

Now that we're on C++20 we no longer need boost for starts_with() and
ends_with() tests.

Also remove the predicate.hpp #include from files that weren't actually
using anything from it.

Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Change-Id: Id68a019d5108a4646eb9b5fd18af33d60617e048
diff --git a/src/ADCSensor.cpp b/src/ADCSensor.cpp
index 2a42999..4d47762 100644
--- a/src/ADCSensor.cpp
+++ b/src/ADCSensor.cpp
@@ -17,7 +17,6 @@
 #include <unistd.h>
 
 #include <ADCSensor.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/asio/read_until.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <sdbusplus/asio/connection.hpp>
diff --git a/src/ADCSensorMain.cpp b/src/ADCSensorMain.cpp
index 019226f..3669330 100644
--- a/src/ADCSensorMain.cpp
+++ b/src/ADCSensorMain.cpp
@@ -18,7 +18,6 @@
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
 #include <boost/algorithm/string/case_conv.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_set.hpp>
 #include <sdbusplus/asio/connection.hpp>
@@ -185,7 +184,7 @@
                      it != sensorsChanged->end(); it++)
                 {
                     if (findSensor->second &&
-                        boost::ends_with(*it, findSensor->second->name))
+                        it->ends_with(findSensor->second->name))
                     {
                         sensorsChanged->erase(it);
                         findSensor->second = nullptr;
diff --git a/src/ExitAirTempSensor.cpp b/src/ExitAirTempSensor.cpp
index 1e0f45f..ea5a432 100644
--- a/src/ExitAirTempSensor.cpp
+++ b/src/ExitAirTempSensor.cpp
@@ -17,7 +17,6 @@
 #include <ExitAirTempSensor.hpp>
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_map.hpp>
 #include <sdbusplus/asio/connection.hpp>
@@ -406,12 +405,11 @@
     {
 
         auto findReading = std::find_if(
-            tachReadings.begin(), tachReadings.end(), [&](const auto& item) {
-                return boost::ends_with(item.first, tachName);
-            });
+            tachReadings.begin(), tachReadings.end(),
+            [&](const auto& item) { return item.first.ends_with(tachName); });
         auto findRange = std::find_if(tachRanges.begin(), tachRanges.end(),
                                       [&](const auto& item) {
-            return boost::ends_with(item.first, tachName);
+            return item.first.ends_with(tachName);
         });
         if (findReading == tachReadings.end())
         {
@@ -551,7 +549,7 @@
             {
                 std::string path = message.get_path();
                 if (path.find("PS") != std::string::npos &&
-                    boost::ends_with(path, "Input_Power"))
+                    path.ends_with("Input_Power"))
                 {
                     self->powerReadings[message.get_path()] = value;
                 }
@@ -602,8 +600,8 @@
                 continue;
             }
             std::string sensorName = path.substr(lastSlash + 1);
-            if (boost::starts_with(sensorName, "PS") &&
-                boost::ends_with(sensorName, "Input_Power"))
+            if (sensorName.starts_with("PS") &&
+                sensorName.ends_with("Input_Power"))
             {
                 // lambda capture requires a proper variable (not a structured
                 // binding)
diff --git a/src/ExternalSensor.cpp b/src/ExternalSensor.cpp
index cc9e7c5..3a6c4aa 100644
--- a/src/ExternalSensor.cpp
+++ b/src/ExternalSensor.cpp
@@ -4,7 +4,6 @@
 
 #include <unistd.h>
 
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
diff --git a/src/ExternalSensorMain.cpp b/src/ExternalSensorMain.cpp
index 413a112..e04fc78 100644
--- a/src/ExternalSensorMain.cpp
+++ b/src/ExternalSensorMain.cpp
@@ -2,7 +2,6 @@
 #include "Utils.hpp"
 #include "VariantVisitors.hpp"
 
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
@@ -281,7 +280,7 @@
                 {
                     std::string suffixIt = "/";
                     suffixIt += *it;
-                    if (boost::ends_with(suffixIt, suffixName))
+                    if (suffixIt.ends_with(suffixName))
                     {
                         sensorsChanged->erase(it);
                         findSensor->second = nullptr;
diff --git a/src/FanMain.cpp b/src/FanMain.cpp
index b52abd9..6732575 100644
--- a/src/FanMain.cpp
+++ b/src/FanMain.cpp
@@ -18,7 +18,6 @@
 #include <TachSensor.hpp>
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
@@ -68,12 +67,12 @@
 {
     fs::path linkPath = parentPath / "device";
     std::string canonical = fs::read_symlink(linkPath);
-    if (boost::ends_with(canonical, "pwm-tacho-controller") ||
-        boost::ends_with(canonical, "pwm_tach:tach"))
+    if (canonical.ends_with("pwm-tacho-controller") ||
+        canonical.ends_with("pwm_tach:tach"))
     {
         return FanTypes::aspeed;
     }
-    if (boost::ends_with(canonical, "pwm-fan-controller"))
+    if (canonical.ends_with("pwm-fan-controller"))
     {
         return FanTypes::nuvoton;
     }
@@ -344,7 +343,7 @@
                 for (auto it = sensorsChanged->begin();
                      it != sensorsChanged->end(); it++)
                 {
-                    if (boost::ends_with(*it, findSensor->second->name))
+                    if (it->ends_with(findSensor->second->name))
                     {
                         sensorsChanged->erase(it);
                         findSensor->second = nullptr;
diff --git a/src/HwmonTempMain.cpp b/src/HwmonTempMain.cpp
index 47f2f07..1431508 100644
--- a/src/HwmonTempMain.cpp
+++ b/src/HwmonTempMain.cpp
@@ -16,7 +16,6 @@
 
 #include <HwmonTempSensor.hpp>
 #include <Utils.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
@@ -359,7 +358,7 @@
                 auto it = sensorsChanged->begin();
                 while (it != sensorsChanged->end())
                 {
-                    if (boost::ends_with(*it, findSensor->second->name))
+                    if (it->ends_with(findSensor->second->name))
                     {
                         it = sensorsChanged->erase(it);
                         findSensor->second = nullptr;
diff --git a/src/HwmonTempSensor.cpp b/src/HwmonTempSensor.cpp
index 744a40f..3f19ec1 100644
--- a/src/HwmonTempSensor.cpp
+++ b/src/HwmonTempSensor.cpp
@@ -17,7 +17,6 @@
 #include <unistd.h>
 
 #include <HwmonTempSensor.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/asio/read_until.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <sdbusplus/asio/connection.hpp>
diff --git a/src/IntelCPUSensor.cpp b/src/IntelCPUSensor.cpp
index 79a51ed..8f04e99 100644
--- a/src/IntelCPUSensor.cpp
+++ b/src/IntelCPUSensor.cpp
@@ -18,7 +18,6 @@
 
 #include <IntelCPUSensor.hpp>
 #include <Utils.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/asio/read_until.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
diff --git a/src/IntelCPUSensorMain.cpp b/src/IntelCPUSensorMain.cpp
index b2238a6..2780c1f 100644
--- a/src/IntelCPUSensorMain.cpp
+++ b/src/IntelCPUSensorMain.cpp
@@ -19,7 +19,6 @@
 #include <IntelCPUSensor.hpp>
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
@@ -424,8 +423,8 @@
         }
 
         const std::string& directoryName = path.path().filename();
-        if (boost::starts_with(directoryName, busStr) &&
-            boost::ends_with(directoryName, addrHexStr))
+        if (directoryName.starts_with(busStr) &&
+            directoryName.ends_with(addrHexStr))
         {
             if (debug)
             {
diff --git a/src/IntrusionSensorMain.cpp b/src/IntrusionSensorMain.cpp
index caa6f93..f85b1a6 100644
--- a/src/IntrusionSensorMain.cpp
+++ b/src/IntrusionSensorMain.cpp
@@ -16,7 +16,6 @@
 
 #include <ChassisIntrusionSensor.hpp>
 #include <Utils.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/asio/io_service.hpp>
 #include <boost/container/flat_map.hpp>
 #include <phosphor-logging/lg2.hpp>
diff --git a/src/IpmbSensor.cpp b/src/IpmbSensor.cpp
index 6c8bace..9d087a7 100644
--- a/src/IpmbSensor.cpp
+++ b/src/IpmbSensor.cpp
@@ -17,7 +17,6 @@
 #include <IpmbSensor.hpp>
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/container/flat_map.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
@@ -576,8 +575,8 @@
     auto findStatus = values.find(power::property);
     if (findStatus != values.end())
     {
-        bool powerStatus = boost::ends_with(
-            std::get<std::string>(findStatus->second), ".Running");
+        bool powerStatus =
+            std::get<std::string>(findStatus->second).ends_with(".Running");
         if (powerStatus)
         {
             if (!initCmdTimer)
diff --git a/src/MCUTempSensor.cpp b/src/MCUTempSensor.cpp
index 2786304..8c96154 100644
--- a/src/MCUTempSensor.cpp
+++ b/src/MCUTempSensor.cpp
@@ -16,7 +16,6 @@
 #include <MCUTempSensor.hpp>
 #include <Utils.hpp>
 #include <VariantVisitors.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/container/flat_map.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
diff --git a/src/PSUSensor.cpp b/src/PSUSensor.cpp
index 9b7b38a..c5ed373 100644
--- a/src/PSUSensor.cpp
+++ b/src/PSUSensor.cpp
@@ -17,7 +17,6 @@
 #include <unistd.h>
 
 #include <PSUSensor.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/asio/random_access_file.hpp>
 #include <boost/asio/read_until.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
diff --git a/src/PSUSensorMain.cpp b/src/PSUSensorMain.cpp
index 26cf7d1..e485598 100644
--- a/src/PSUSensorMain.cpp
+++ b/src/PSUSensorMain.cpp
@@ -17,7 +17,6 @@
 #include <PSUEvent.hpp>
 #include <PSUSensor.hpp>
 #include <Utils.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
@@ -477,7 +476,7 @@
             auto it =
                 std::find_if(sensorsChanged->begin(), sensorsChanged->end(),
                              [psuNameStr](std::string& s) {
-                                 return boost::ends_with(s, psuNameStr);
+                                 return s.ends_with(psuNameStr);
                              });
 
             if (it == sensorsChanged->end())
diff --git a/src/TachSensor.cpp b/src/TachSensor.cpp
index 41cc212..dacbec6 100644
--- a/src/TachSensor.cpp
+++ b/src/TachSensor.cpp
@@ -18,7 +18,6 @@
 
 #include <TachSensor.hpp>
 #include <Utils.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/asio/read_until.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <gpiod.hpp>
diff --git a/src/Utils.cpp b/src/Utils.cpp
index e247edd..7dc40c4 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -17,7 +17,6 @@
 #include "dbus-sensor_config.h"
 
 #include <Utils.hpp>
-#include <boost/algorithm/string/predicate.hpp>
 #include <boost/container/flat_map.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
@@ -178,7 +177,7 @@
         bool correctType = false;
         for (const auto& [intf, cfg] : pathPair.second)
         {
-            if (boost::starts_with(intf, type))
+            if (intf.starts_with(type))
             {
                 correctType = true;
                 break;
@@ -354,8 +353,7 @@
             std::cerr << "error getting power status " << ec.message() << "\n";
             return;
         }
-        powerStatusOn =
-            boost::ends_with(std::get<std::string>(state), ".Running");
+        powerStatusOn = std::get<std::string>(state).ends_with(".Running");
         },
         power::busname, power::path, properties::interface, properties::get,
         power::interface, power::property);
@@ -420,8 +418,8 @@
         auto findState = values.find(power::property);
         if (findState != values.end())
         {
-            bool on = boost::ends_with(std::get<std::string>(findState->second),
-                                       ".Running");
+            bool on =
+                std::get<std::string>(findState->second).ends_with(".Running");
             if (!on)
             {
                 timer.cancel();